Estuve buscando la solución, y pues no pude escaparme de las consultas anidadas.
Te comento Dano que esa consulta fué la primera que hice y no funcionó, Igual te dejo el código de las tablas para que pruebes mejor. Si puedes optimizarla, también me ayudarás a mí.
Código :
SELECT R.nelemento, R.csubelemento, R.tipo, tabla1.subelemento
FROM tabla1 LEFT JOIN (SELECT tabla2.nelemento, tabla2.csubelemento, tabla2.tipo FROM tabla2 WHERE nelemento='e12') AS R ON R.csubelemento=tabla1.id
WHERE tabla1.elemento='pc' AND (R.nelemento='e12' OR R.nelemento IS NULL)
Código :
CREATE TABLE `tabla1` (
`id` int(11) NOT NULL,
`elemento` varchar(40) NOT NULL,
`subelemento` varchar(40) NOT NULL
)
INSERT INTO `tabla1` VALUES (1, 'pc', 'botones');
INSERT INTO `tabla1` VALUES (2, 'pc', 'pantalla');
INSERT INTO `tabla1` VALUES (3, 'cd', 'hojas');
INSERT INTO `tabla1` VALUES (4, 'pc', 'mouse');
CREATE TABLE `tabla2` (
`nelemento` varchar(5) NOT NULL,
`csubelemento` int(11) NOT NULL,
`tipo` varchar(5) NOT NULL
)
INSERT INTO `tabla2` VALUES ('e12', 4, 's');
INSERT INTO `tabla2` VALUES ('e16', 1, 'f');
INSERT INTO `tabla2` VALUES ('e13', 2, 'p');
INSERT INTO `tabla2` VALUES ('e12', 2, 'f');
INSERT INTO `tabla2` VALUES ('e13', 1, 'p');
INSERT INTO `tabla2` VALUES ('e14', 1, 's');
Traté de evitar una cosulta por cada una de las tablas.
Si no te resulta york3rs o crees que se puede reducir, me avisas para seguir intentando.
Saludos.