MySQL - Ayuda con consulta

 
Vista:
sin imagen de perfil

Ayuda con consulta

Publicado por Jorge (3 intervenciones) el 13/05/2016 01:18:19
Buenas tardes, espero poder explicarme con claridad para que me puedan ayudar mejor... empiezo..

Tabla Autos, que entre otros campos tiene idConcesionario, IdFinancieras que son con las que tengo el conflicto... tengo también entre otras tablas la Tabla Concesionario y la Tabla Financieras.

Quiero hacer una consulta en la que me muestre los campos de Autos, pero en vez de mostrar el ID de concesionario o de financiera me muestre los nombres de las mismas, tengo una consulta que creía me estaba funcionando, hasta que busque un auto que no me mostró...

El problema radica en que en los campos idConcesionario o IdFinancieras de la tabla Autos tienen valores que no coinciden con ningún id de la tabla Concesionario o Financiera. Me pueden ayudar con la consulta para que en caso de que el idConcesionario en Autos no coincida con ningún id en Concesionarios solo me de un registro vació.

la consulta que tengo es la siguiente....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
select
autos.id as id,
autos.economico as economico,
empresas.nombre as empresa,
estatus.nombre as estatus,
tipoauto.nombreFamilia as familia,
concesionario.nombre as concesionario,
financieras.nombre as financiera,
from autos, concesionario, empresas, financieras, marcas
where
estatus.id = autos.idStatus and
concesionario.id = autos.idConcesionario and
empresas.id = autos.idEmpresa and
financieras.id = autos.idFinanciera and
tipoauto.idFamilia = autos.idTipoAuto and
autos.economico = 96242


en este caso no me devuelve ningún registro, porque el auto 96242 tiene como idConcesionario el 0, y en la tabla concesionario no existe el id 0, en este caso quiero que me de los demas datos y el campo concesionario en blanco...

Espero haberme explicado y me puedan ayudar, estoy bloqueado y no se me ocurre nada, por lo regular cuando estoy escribiendo para pedir ayuda se me aclaran las ideas y puedo solucionarlo, pero en esta ocasion no.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 20
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Ayuda con consulta

Publicado por Gonzalo (103 intervenciones) el 13/05/2016 13:36:27
El problema radica en que en los campos idConcesionario o IdFinancieras de la tabla Autos tienen valores que no coinciden con ningún id de la tabla Concesionario o Financiera. Me pueden ayudar con la consulta para que en caso de que el idConcesionario en Autos no coincida con ningún id en Concesionarios solo me de un registro vació.

Eso que describes no es un error de la consulta, sino un error de datos. Simplemente tienes autos que NO estás relacionados ni con las Concesionarias ni con Financieras, y para tu consulta esa relación es obligatoria.
Lo que tienes que definir es si ese tipo de casos es real, es decir si un auto PUEDE no estár vinculado a esas otras dos tablas.
SI ese caso es correcto, entonces la relación con con concesionarias y financieras es OPCIONAL, y NUNCA recuperaras ni ID ni nombres de tales tablas. En ese caso la relación de la query debe hacerse en forma explicita (INNER JOIN / LEFT JOIN / RIGHT JOIN), y no implícita (la coma), ya que sólo de esa forma obtendrás con LEFT JOIN las relaciones que son opcionales con NULL en esos campos.

¿Se entiende?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda con consulta

Publicado por Jorge (3 intervenciones) el 13/05/2016 16:39:38
Perfectamente Gonzalo, muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con consulta

Publicado por Maurilio AV (10 intervenciones) el 20/05/2016 10:11:18
Hola amigo espero poderte ayudar con mi comentario pienso que donde estas mal es que no estas haciendo referencia con tus tablas y tu estatus de tal manera que tu codigo podria quedar a mi modo de ver de esta forma.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
select
autos.id as id,
autos.economico as economico,
empresas.nombre as empresa,
estatus.nombre as estatus,
tipoauto.nombreFamilia as familia,
concesionario.nombre as concesionario,
financieras.nombre as financiera,
from autos, empresas, estatus, tipoauto, concesionario, financieras
where
estatus.id = autos.idStatus and
concesionario.id = autos.idConcesionario and
empresas.id = autos.idEmpresa and
financieras.id = autos.idFinanciera and
tipoauto.idFamilia = autos.idTipoAuto and
autos.economico = 96242

O otro de tus errores que podrias tener es que cheques el tipo de dato que le estas poniendo a tu campos ya que en ocasiones suele suceder en que nos equivocamos en el tipo de dato y por eso no nos pueda mostrar nuestros datos o bien marcar error.

espero y te sirva de ayuda suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con consulta

Publicado por Salaicez (3 intervenciones) el 09/06/2016 23:09:41
NO se puede porque no estás relacinando bien tu base , por eso no es posible obtener los datos que quieres.
UNa solucion sería agregar la FK ya sea de Concesionario o Financieras o viceversa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar