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

Consulta de 2 tablas

Estas en el tema de Consulta de 2 tablas en el foro de Bases de Datos General en Foros del Web. Saludos Tengo estas 2 tablas: TABLA Vehiculo: - id_vehiculo - tipo - status TABLA Conductor: - id_conductor - nombre - unidad (aquí se guarda el ...
  #1 (permalink)  
Antiguo 24/09/2004, 13:48
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 10 meses
Puntos: 1
Consulta de 2 tablas (SubSelect)

Saludos

Tengo estas 2 tablas:

TABLA Vehiculo:

- id_vehiculo
- tipo
- status


TABLA Conductor:

- id_conductor
- nombre
- unidad (aquí se guarda el id_vehiculo de Vehiculo)


Ahora lo que quiero es que me muestre un listado de los id_vehiculo que estan sin asignar al conductor.

Estaba haciendo esto:

select a.id_vehiculo from vehiculo as a, conductor as b where a.id_vehiculo != b.unidad

Pero ese query me trae un listado enorme. Por qué??

entiendo que porque se pregunta:

id_vehiculo Tabla Vehiculo = 1,2,3,4,9

unidad Tabla Conductor = 1,2,9

Es igual a.1 y b.1 SI
Es igual a.1 y b.2 NO
Es igual a.1 y b.9 NO
Es igual a.2 y b.1 NO
Es igual a.2 y b.s SI

Y asi sucesivamente, entonces el resultado que me trae son valores incorrectos. Cómo se que son incorrectos porque lo que me trae es esto:

1,2,3,4,9
1,2,3,4,9

y asi lo repite 5 veces

Me imagine entonces que buscando primero los que si son iguales, me traería esto:

select a.id_vehiculo from vehiculo as a, conductor as b where a.id_vehiculo = b.unidad

Y efectivamente me trae: 1,2,9

Ahora la idea es hacer otra consulta que pregunte, traeme todos los id_vehiculo que sean distintos a (1,2,9)

Pero no se como escribir eso

Solo necesito el QUERY, no como armar el listado ni nada de eso. Simplemente cual sería la consulta sql??

NOTA: Todos los query los estoy probando en el MySql front. No es el código duro del site

Gracias
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.

Última edición por José Molina; 27/09/2004 a las 06:18
  #2 (permalink)  
Antiguo 24/09/2004, 14:05
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 10 meses
Puntos: 1
He estado probando con esto:

select c.id_vehiculo from vehiculo as c where c.id_vehiculo is not (select Distinct a.id_vehiculo from vehiculo as a, conductor as b where a.id_vehiculo = b.unidad);

Pero me da error de sintaxis.

Alguna idea??
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #3 (permalink)  
Antiguo 27/09/2004, 06:17
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 10 meses
Puntos: 1
Saludos.

Bien, la sintaxis correcta es:

select c.id_vehiculo from vehiculo as c where c.id_vehiculo NOT IN (select Distinct a.id_vehiculo from vehiculo as a, conductor as b where a.id_vehiculo = b.unidad);

Pero resulta que según: http://dev.mysql.com/doc/mysql/en/Subquery_errors.html

No esta disponible a todas las versiones de MySql.

Cualquier idea se agradece.
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #4 (permalink)  
Antiguo 27/09/2004, 06:36
 
Fecha de Ingreso: septiembre-2004
Mensajes: 35
Antigüedad: 20 años, 2 meses
Puntos: 0
No trabajo con MySql, pero según la sintaxis de SQL podría ser así:

SELECT id_vehiculo FROM vehiculo LEFT JOIN conductor ON id_vehiculo = unidad WHERE unidad Is Null

Espero que funcione.
  #5 (permalink)  
Antiguo 27/09/2004, 07:11
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 10 meses
Puntos: 1
Pero eso me trae qué??

Necesito que me traiga los id_vehiculo de Vehiculo que no esten contneidos en el campo unidad de la tabla Conductor.

Cada campo guarda solo 1 valor.

Esa sentencia me de como resultado eso??

Bueno lo voy a probar de todas formas
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.

Última edición por José Molina; 27/09/2004 a las 07:23
  #6 (permalink)  
Antiguo 27/09/2004, 07:24
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 10 meses
Puntos: 1
De acuerdo Perfecto

Gracias aguirre.

La sentencia funciona perfectamente.

La verdad es que no la entiendo pero funciona jejejeje
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #7 (permalink)  
Antiguo 27/09/2004, 08:51
 
Fecha de Ingreso: septiembre-2004
Mensajes: 35
Antigüedad: 20 años, 2 meses
Puntos: 0
Esa sentencia viene a decir: dame los id_vehiculo que, cuzados con conductor, según la clave de cruce (id_vehiculo = unidad) no haya referencia en conductor, que es lo que tu querias, o no?
  #8 (permalink)  
Antiguo 27/09/2004, 09:01
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 22 años, 10 meses
Puntos: 1
De acuerdo Exactamente

Si aguirre, era eso.

Muchas Gracias, por la solución y la explicación.
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
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 14:41.