Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

uso left join

Estas en el tema de uso left join en el foro de Mysql en Foros del Web. buenas tardes, resulta q realizo esta consulta Código PHP: $queEmp  =  'SELECT manila.codigo,manila.nombre,manila.central,manila.tecnologia,manila.tarjeta,manila.puerto,manila.vpi,manila.vci FROM manila,medallo WHERE (medallo.vpi=manila.vpi and medallo.vci=manila.vci)' ;  y me funciona perfecto, pero necesito saber los registros diferentes de esta ...
  #1 (permalink)  
Antiguo 17/05/2008, 14:20
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 16 años, 6 meses
Puntos: 0
De acuerdo uso left join

buenas tardes, resulta q realizo esta consulta
Código PHP:
$queEmp 'SELECT manila.codigo,manila.nombre,manila.central,manila.tecnologia,manila.tarjeta,manila.puerto,manila.vpi,manila.vci FROM manila,medallo WHERE (medallo.vpi=manila.vpi and medallo.vci=manila.vci)'
y me funciona perfecto, pero necesito saber los registros diferentes de esta consulta en otro foro realice una pregunta similar y observe q con left join se muestran los registros faltantes, asi lo hice :

$queEmp = 'SELECT manila.codigo,manila.nombre,manila.central,manila. tecnologia,manila.tarjeta,manila.puerto,manila.vpi ,manila.vci
FROM `manila` LEFT JOIN `medallo` ON (medallo.vpi=manila.vpi and medallo.vci=manila.vci) WHERE manila.vpi and manila.vci and medallo.vpi and medallo.vci Is Null';

pero no me arroja nada q puede ser??

muchas gracias
  #2 (permalink)  
Antiguo 17/05/2008, 15:53
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: uso left join

LEFT JOIN devuelve los registros coincidentes del JOIN que estén en la tabla IZQUIERDA (la primera). Si no hay puntos de coincidencia, no aparecerá nada.
Para que aparezcan los NO COINCIDENTES tienes un camino: Darle una condición al WHERE, que verifique que el campo de la segunda tabla en el JOIN tenga valor NULL.

Código:
SELECT 
manila.codigo,
manila.nombre,
manila.central,
manila.tecnologia,
manila.tarjeta,
manila.puerto,
manila.vpi,
manila.vci 
FROM manila LEFT JOIN medallo USING(vpi, ci)
WHERE medallo.vpi IS NULL;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/05/2008, 02:47
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: uso left join

Cita:
LEFT JOIN devuelve los registros coincidentes del JOIN que estén en la tabla IZQUIERDA (la primera).
Solo agregaria que devuelve TODOS los registros de la taba izquierda relacionados con los de la tabla derecha donde se produzca coincidencia. Por eso cuando se pone la condicion de que el campo de la tabla derecha sea nulo los registros devueltos son los de la tabla izquierda que no tienen ninguno relacionado en la tabla derecha. La condicion del nul debe producirse sobre el/los campo que relaciona las dos tablas...


SELECT
manila.codigo,
manila.nombre,
manila.central,
manila.tecnologia,
manila.tarjeta,
manila.puerto,
manila.vpi,
manila.vci
FROM manila LEFT JOIN medallo
on medallo.vpi=manila.vpi and medallo.vci=manila.vci
WHERE medallo.vpi IS NULL or medallo.vci IS NULL;

en realidad con que uno sea nulo basta....

Quim

Última edición por quimfv; 19/05/2008 a las 02:52
  #4 (permalink)  
Antiguo 19/05/2008, 09:59
Avatar de darkleo  
Fecha de Ingreso: octubre-2007
Mensajes: 106
Antigüedad: 16 años, 6 meses
Puntos: 0
De acuerdo Respuesta: uso left join

muchas gracias quim, me sirvio de mucha ayuda y a gnzsoloyo muchas gracias tambien, a los 2 quedo muy clara la duda, muchisiisismas gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:34.