Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/05/2013, 12:45
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Me devuelve un registro que no existe ¿WTF?

Código MySQL:
Ver original
  1.     T1.PrimerDato ,
  2.     T1.SegundoDato ,
  3.     COUNT( T2.TercerDato ) TercerDato
  4. FROM    T1
  5.     LEFT JOIN T2 ON T1.Idt2 = T2.Idt1
  6. WHERE T1.Idt2 = 12;

El error lo cometes al usar LEFT JOIN, cuando deberías usar INNER JOIN, si lo que pretendes es que sólo devuelva registros si se cumple que T1.Idt2 = T2.Idt1.
LEFT JOIN devuelve todo lo que está en la primera tabla del FROM tenga o no coincidencias con lo que haya en la segunda. Si la primera tabla contiene datos, siempre devolverá registros, en especial si en el WHERE validas un ID de esa tabla que sí exista.
¿Se entiende?

Lo que debes hacer es eliminar esa opción en una de dos formas:
Código MySQL:
Ver original
  1.     T1.PrimerDato ,
  2.     T1.SegundoDato ,
  3.     COUNT( T2.TercerDato ) TercerDato
  4. FROM    T1
  5.     INNER JOIN T2 ON T1.Idt2 = T2.Idt1
  6. WHERE T1.Idt2 = 12;

O bien:
Código MySQL:
Ver original
  1.     T1.PrimerDato ,
  2.     T1.SegundoDato ,
  3.     COUNT( T2.TercerDato ) TercerDato
  4. FROM    T1
  5.     LEFT JOIN T2 ON T1.Idt2 = T2.Idt1
  6. WHERE T1.Idt2 = 12
  7.         AND T2.Idt1 IS NOT 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)