Ver Mensaje Individual
  #8 (permalink)  
Antiguo 20/11/2014, 07:20
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
LEFT JOIN devuelve todo lo que está en la primera tabla del FROM (la de la izquierda), tenga o no relacion con la segunda tabla.
En realidad nos estamos basando en un ejemplo quye tu mismo nos pasate, y que está mal...
Estás buscando los user sin lista, sobre una tabla que forzosamente debe tener relaciones con la lista, porque es la tabla que los relaciona...
Debes buscar entre la tabla de usuarios y la tabla relacional.

Código SQL:
Ver original
  1. SELECT u.id, COUNT(uhl.id_list) cant
  2. FROM users u
  3.     LEFT JOIN users_has_list uhl ON u.id = uhl.id_users
  4.    INNER JOIN `list`l ON uhl.id_list = l.id
  5. WHERE l.id_admins = 1 OR u.id = uhl.id_users IS NULL
  6. GROUP BY u.id

En esencia, la query no es posible sin tres tablas, por la restriccion de l.id_admins = 1 que estas poniendo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 20/11/2014 a las 07:26