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

Que me recomendarian para construir esta consulta?

Estas en el tema de Que me recomendarian para construir esta consulta? en el foro de Bases de Datos General en Foros del Web. Hola, imaginaos que tenemos estas tablas Concesionarios, Coches y Reparaciones. Estan relacionadas de esta forma: Reparaciones con Coches y Concesionarios, de forma que en en ...
  #1 (permalink)  
Antiguo 08/07/2009, 09:02
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 16 años
Puntos: 0
Que me recomendarian para construir esta consulta?

Hola, imaginaos que tenemos estas tablas Concesionarios, Coches y Reparaciones.

Estan relacionadas de esta forma:
Reparaciones con Coches y Concesionarios, de forma que en en cada reparacion se identifica el concesario y el coche.

Ejemplo:
Coche (key, nombre)
1 - Peugeot 407 matricula yyyy
2 - Peugeot 102 matricula xxxx
3 - peugeot 605
Concesionarios (key, nombre)
1 - Disauto
2 - La mora
3 - Senel
4 - Mata
Reparaciones (key_coche,key_concesaionario)
1 1
1 2
1 3
2 1
2 3
(El coche 1, peugeot 407 ha tenido alguna reparacion en el concesionario Disauto, La mora y Senel. El coche 2, peugeout 102 ha tenido una reparacion en el concesario Disauto)


Entonces, suponer que quiero saber, que coches han sido reparados en unos concesionarios que se escogen de alguna forma.
Por ejemplo, quiero saber que coches han sido reparados en los concesionarios Disauto y Senel (el mismo coche en ambos), en el ejemplo serian los coches 1 y 2. Me explico?


A mi se me ocurren dos maneras:
a) Manera fea con sql, creando una select especial, dependiendo de los concesionarios elegidos:
select * From coches c, reparaciones r WHERE c.id=r.idcoche AND r.idconcesaionario IN (--->> esto cambia dependiendo de la seleccion de concesionarios<---)
b) con php, obteniendo los coches reparados en cada concesionario y aplicando algun algorimo haga una interseccion entre los registros.


Se os ocurre alguna otra forma, mas optima? mejor?

Gracias a todos
  #2 (permalink)  
Antiguo 08/07/2009, 09:36
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: Que me recomendarian para construir esta consulta?

SELECT coche.key, coche.nombre FROM coche INNER JOIN reparaciones ON coche.key = reparaciones.key_coche INNER JOIN Concesionarios ON Concesionarios.key = reparaciones.key_concesionario WHERE reparaciones.key_concesionario IN (1,3) group by reparaciones.key_coche HAVING COUNT(DISTINCT reparaciones.key_concesionario) = 2

No lo he probado.
  #3 (permalink)  
Antiguo 08/07/2009, 15:46
 
Fecha de Ingreso: noviembre-2008
Mensajes: 74
Antigüedad: 16 años
Puntos: 0
Respuesta: Que me recomendarian para construir esta consulta?

Muchas gracias jurena,no se me habia ocurrido, la verdad es que tiene su logica, combiando el IN y group by para que salgan los registros de coches con reparaciones en esos 2 concesionarios y luego contando a ver si salen 2 registros.

Lo probare (en mi aplicacion, que no va de coches) y te cuento.

muy agradecido
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 23:26.