prueba con un left join

ej;


mysql> select * from padre;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
+----+

mysql> select * from hija;
+----+
| id |
+----+
|  1 |
|  2 |
|  5 |
|  6 |
|  7 |
+----+



mysql> select h.id as h_id, p.id as p_id from hija h LEFT JOIN padre p
ON h.id = p.id where  p.id is null;
+------+------+
| h_id | p_id |
+------+------+
|    5 | NULL |
|    6 | NULL |
|    7 | NULL |
+------+------+





El día 30 de septiembre de 2008 19:20, Lorenzo Ponce
<[EMAIL PROTECTED]> escribió:
> Estimados, en primer lugar, no sé si esta es la lista adecuada por lo que no 
> vi una de base de datos, si no lo es, favor indicar (con una vez basta).
>
> Tengo una base de datos MyISAM (MySQL), y tengo la necesidad de rescatar 
> datos de una tabla cuya integridad referencial no existe.
>
> Es sencillo sacar los que tienen su PK con la FK en otra tabla, WHERE 
> idCampo=fkCampo, pero lo que quiero es sacar aquellos registros que NO tienen 
> hecha la relación.
>
> He intentado usando selects anidados y funciones como NOT IN, lo cual 
> funciona bien con pocos registros, pero al crecer la cantidad de registros se 
> torna demasiado lento por los selects que debe hacer en cada vuelta.
>
> Me gustaría me indicaran alguna solución más eficiente. Me imagino que llenar 
> de OR la consulta sería poco eficiente también.
>
> Favor, omitir comentarios del tipo cámbiate a postgres, u otros, que no 
> contribuyan a la solución de codificación requerida.
>
> Muchas gracias.
> LP
>
>
>
>      
> ____________________________________________________________________________________
> ¡Todo sobre Amor y Sexo!
> La guía completa para tu vida en Mujer de Hoy.
> http://mujerdehoy.telemundo.yahoo.com/
>



-- 
Juan Manuel Doren
Santiago, Chile

Responder a