Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/11/2019, 09:30
prueba230683
 
Fecha de Ingreso: abril-2011
Mensajes: 170
Antigüedad: 13 años
Puntos: 68
Respuesta: Cómo obtener en UN QUERY: "SELECT * FROM `t1_usuarios` y su {# de registro

Creo que tienes que usar un RIGHT JOIN en vez de INNER JOIN.

INNER JOIN une todos los registros de la tabla "usuario" que se corresponden con otros registros de la tabla "ventas" (es decir, cuando usuario.id = ventas.id).

RIGHT JOIN hace lo mismo que INNER JOIN pero además selecciona los registros de la tabla derecha (usuario), que no se corresponden con ningún registro de la tabla "ventas" (es decir, los usuarios que no tienen ninguna venta). Las columnas restantes son rellenadas con NULL.

Como COUNT solamente cuenta los valores no nulos, COUNT(ventas.id) debería devolver cero en aquellos usuarios que no tienen ventas asociadas.

Código SQL:
Ver original
  1. SELECT usuario.*,
  2. COUNT(ventas.id) FROM ventas
  3. RIGHT JOIN usuario
  4. ON ventas.id = usuario.id
  5. GROUP BY usuario.id

PD: El GROUP BY debe ser en base a usuario.id, no en base a ventas.id.

PD2: En los INNER JOIN se puede usar tanto WHERE como ON para emparejar las tablas, pero en los RIGHT/LEFT JOIN debes usar ON obligatoriamente.

Última edición por prueba230683; 07/11/2019 a las 13:12