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

Consulta a dos tablas con condicion

Estas en el tema de Consulta a dos tablas con condicion en el foro de Bases de Datos General en Foros del Web. Amigos, tengo aqui un problema para hacer una consulta: Tengo varias tablas como el modelo: http://www.instrumentacionycontrol.net/images/base_datos.gif Lo que quiero hacer es una consulta relacionada con ...
  #1 (permalink)  
Antiguo 03/08/2010, 13:35
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Pregunta Consulta a dos tablas con condicion

Amigos, tengo aqui un problema para hacer una consulta:

Tengo varias tablas como el modelo: http://www.instrumentacionycontrol.net/images/base_datos.gif

Lo que quiero hacer es una consulta relacionada con las tablas CONDUCTORES, VEHICULOS, GRUPOS Y DATOS_VEHICULOS

Primero con un combox me muestre los grupos y un boton selecciono el GRUPO de vehiculos que quiero ver (ambas tablas relacionads con un ID). hasta alli todo bien. Selecciono y pulso y por el metodo GET me filtra la tabla. Pero esta misma tabla tiene relacionada dos tablas mas que son CONDUCTORES Y DATOS_VEHICULOS con el ID correspondiente. En la cual la tabla VEHICULOS Y DATOS_VEHICULOS tiene una relacion UNO A MUCHOS (un vehiculo tiene muchos datos) conforme al tiempo.

Entonces, quiero mostrar en la misma tabla que se muestran los vehiculos de un grupo, en otra columnas mostrar que conductor se le ha asignado (con la relacion de la tabla CONDUCTORES). y que en esa misma fila me muestra el ULTIMO dato relacionado con ese VEHICULO.

Espero ser explicito

Saludos y gracias por su ayuda.
  #2 (permalink)  
Antiguo 05/08/2010, 14:35
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Consulta a dos tablas con condicion

Porfavor, aquien me puede dar alguna sugerencia para solucionar mi problema?.

Gracias.
  #3 (permalink)  
Antiguo 06/08/2010, 08:31
 
Fecha de Ingreso: noviembre-2009
Mensajes: 10
Antigüedad: 15 años
Puntos: 0
Respuesta: Consulta a dos tablas con condicion

Hola!

Dale una estudiada al uso de "join" (revisa la diferencia entre inner, left, right y outer join). Sirve exactamente para eso, unir dos o más tablas en base a sus ID's. Por ejemplo:

SELECT * FROM tabla1 JOIN tabla2 ON tabla1.FK_tabla2 = tabla2.PK

En donde todo se fusiona en una sola tabla (no se guarda, se queda en la consulta) y la puedes manejar como tal, con condiciones, grupos, ordenamientos, etc.

En tu caso buscas algo como esto:

SELECT * FROM conductores JOIN vehiculos ON vehiculos.id_vehiculo = conductores.id_vehiculo_FK
JOIN grupos ON grupos.id_grupo = vehiculos.id_grupo_FK
JOIN datos_vehiculos ON datos_vehiculos.id_vehiculo_FK = vehiculos.id_vehiculo

El resultado final de esta consulta será la fusión de las cuatro tablas en las que HAYA HABIDO COINCIDENCIA DE LLAVES EN TODAS. Para que entiendas lo que digo es necesario que estudies lo que te dije al principio.

Saludos!
  #4 (permalink)  
Antiguo 06/08/2010, 16:24
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Consulta a dos tablas con condicion

dmzg10, muchas gracias por tu ayuda. Voy a leer el parametro JOIN, testear las sentencias que me sugieres y te comento. Gracias por darte el tiempo de responder.

Saludos
  #5 (permalink)  
Antiguo 07/08/2010, 09:06
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Consulta a dos tablas con condicion

He revisado el JOIN y me parece una maravilla. Logre unir las tablas y todo lo demas. haciendo la consulta:

SELECT *
FROM conductores
JOIN vehiculos ON vehiculos.id_vehiculo = conductores.id_vehiculo_FK
JOIN datos_vehiculos ON datos_vehiculos.id_vehiculo_FK = vehiculos.id_vehiculo
WHERE vehiculos.id_grupo_FK='2'


Ahora tengo el inconveniente que el resultado de la consulta tiene con varias ID algo asi (tabla ejemplo):

id_veh Nombre id_da Fecha Vel id_veh
--------------------------------------------------------------------------------
HW-0003 Supervisor Logistica 2 0 2010-08-02 19:31:07 80 HW-0003
HW-0003 Supervisor Logistica 2 1 2010-08-02 19:31:07 90 HW-0003
HW-0003 Supervisor Logistica 2 2 0000-00-00 00:00:00 100 HW-0003
HW-0004 Asistente Logistica 2 3 2010-08-02 19:42:32 150 HW-0004
HW-0004 Asistente Logistica 2 5 2010-08-02 19:42:32 120 HW-0004


Donde quiero solamente me muestre al ultimo dato (por fecha ultimo) por cada id_vehiculo y no todo.

Saludos,

Etiquetas: consulta
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 01:58.