Ver Mensaje Individual
  #3 (permalink)  
Antiguo 17/06/2010, 07:41
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: 16 años, 5 meses
Puntos: 2658
Respuesta: problema con consulta

Hay al menos cuatro cosas a resaltar:

1) Estás usando palabras reservadas como nombres de campos, lo que puede dar lugar a comportamientos erráticos..

2) El uso de la coma (sinónimo de JOIN) puede generar comportamientos también erráticos, porque MySQL intenta emparejar los campos con el mismo nombre, con lo que puede cruzar campos con dominios incompatibles. Es preferible usar INNER JOIN para hacer estas juntas, ya que de ese modo sólo se relacionan campos específicos.

3) El orden de los factores altera el producto en los JOIN. El orden de las relaciones de campos debe ser puesto en el mismo orden que las tablas. Es más eficiente.

4) Ten en cuenta que si usas AND en un WHERE para todas las condiciones, se deben cumplir todas sin excepción para devolver datos. Habría que analizar el contenido de las tablas para saber si hay otros registros que cumplan efectivamente con todas...

Probemos:
Código MySQL:
Ver original
  1.   a.id,
  2.   a.username,
  3.   a.email,
  4.   b.update_id,
  5.   b.`UPDATE`,
  6.   b.`time`,
  7.   b.user_id_fk
  8.   usuarios a
  9.   INNER JOIN updates b ON a.id = b.user_id_fk
  10.   INNER JOIN relationships c ON b.user_id_fk = c.user_to
  11.   c.user_from = $user_id AND c.`STATUS` = '1'

No hay que olvidarse, tampoco, que un INNER JOIN devolverá registros si y sólo si existen registros que coincidan entre las tres tablas, además de las condiciones del WHERE.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)