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

problemas con INNER

Estas en el tema de problemas con INNER en el foro de Mysql en Foros del Web. Estimados, tengo una consulta donde quiero mostrar todas los modelos de autos, sus respectivas marcas y la cantidad de clientes que compraron el auto MODELO ...
  #1 (permalink)  
Antiguo 11/08/2010, 14:54
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
problemas con INNER

Estimados,
tengo una consulta donde quiero mostrar todas los modelos de autos, sus respectivas marcas y la cantidad de clientes que compraron el auto

MODELO MARCA COMPRADORES
Mustang Ford 2455
Falcon Ford 23

para eso tengo la consulta

Código PHP:
SELECT modelos.nombremarcas.nombreCOUNT (compradores.id)
FROM modelos
INNER JOIN marcas ON marcas
.id modelos.id_marca
INNER JOIN compradores ON compradores
.id_modelo modelos.id 
el problema es que.. si no hay ningun comprador no me muestra la fila
y lo ideal seria que me muestre compradores = 0

que puedo hacer??

gracias!!!!!
__________________
On error no hago nada porque deje de fumar...
  #2 (permalink)  
Antiguo 11/08/2010, 15:55
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, 4 meses
Puntos: 2658
Respuesta: problemas con INNER

Código MySQL:
Ver original
  1.     modelos.nombre,
  2.     MA.nombre,
  3.     COUNT (compradores.id) Comprados
  4.     modelos MO
  5.     INNER JOIN marcas MA ON MA.id = MO.id_marca
  6.     LEFT JOIN  compradores C ON  MO.id   = C.id_modelo
  7.     TRUE OR C.id_modelo 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 12/08/2010, 08:52
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: problemas con INNER

gnzsoloyo
gracias por responder, te cuento que no me funciona

si cmabio la condicion del WHERE obtengo resultados diferentes

WHERE TRUE OR C.id_modelo IS NULL;
me devuelve solo los que tienen Comprados > 0

WHERE C.id_modelo IS NULL;
me devuelve solo los que tienen Comprados = 0

WHERE C.id_modelo IS NULL OR C.id_modelo IS NOT NULL;
me devuelve solo los que tienen Comprados > 0

que puede estar fallando?
__________________
On error no hago nada porque deje de fumar...
  #4 (permalink)  
Antiguo 12/08/2010, 09:45
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: problemas con INNER

Proba de esta forma:

Código:
SELECT modelos.nombre, marcas.nombre, COUNT (compradores.id)
FROM modelos
INNER JOIN marcas ON marcas.id = modelos.id_marca
LEFT JOIN compradores ON compradores.id_modelo = modelos.id
Creeria que funciona.

Saludos
  #5 (permalink)  
Antiguo 12/08/2010, 09:46
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: problemas con INNER

No sé si he entendido bien, pero si quieres el número por marca y modelo, debes agrupar por marca y modelo.
SELECT
MA.nombre, MO.nombre,
IFNULL(COUNT (compradores.id),0) Comprados
FROM
modelos MO
INNER JOIN marcas MA ON MA.id = MO.id_marca
LEFT JOIN compradores C ON MO.id = C.id_modelo
GROUP BY MA.nombre, MO.nombre
  #6 (permalink)  
Antiguo 12/08/2010, 09:51
Avatar de dieguicho  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires
Mensajes: 1.190
Antigüedad: 22 años, 5 meses
Puntos: 1
Respuesta: problemas con INNER

gracias a todos. funciono la ultima opcion con IFNULL y GROUP al final
gracias!!
__________________
On error no hago nada porque deje de fumar...

Etiquetas: Ninguno
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 16:47.