MySQL - Consulta en tablas relacionadas

 
Vista:

Consulta en tablas relacionadas

Publicado por luis (2 intervenciones) el 14/09/2008 18:46:36
Hola buenas,

Tengo una duda con una consulta que quiero hacer en tablas relacionadas.

Supongamos que tenemos tres tablas:

Tabla (Provincias)

Idprovincia
nombre

Tabla (puertos)

idpuerto
idprovincia
nombre

Tabla (aeropuerto)

idaeropuerto
idprovincia
nombre

Bien yo la consuta que deseo realiar, es que me muestre aquellas provincias en las que hay aeropuertos o en las que hay puertos y la consulta que uso es esta

Select * from provincias, puertos where provincias.idprovincia = puertos.idprovincias

La consulta me da aquellas provincias en las que hay puertos, pero si en una provincia hay dos puertos me repite la provincia 2 veces.

Saludos y gracias de antemano.
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

RE:Consulta en tablas relacionadas

Publicado por Gonzalo GC (339 intervenciones) el 15/09/2008 01:25:28
Una consulta de ese tipo se resuelve únicamente por subconsultas, porque tienes dos condiciones que solamente se cumplen en forma condicional:

SELECT nombre 'Provincia'
FROM provincias
WHERE (idprovincia IN (SELECT idprovincia FROM puerto))
OR (idprovincia IN ((SELECT idprovincia FROM aeropuerto));

Un tip: los nombres de los campos deben ser diferentes en diferentes tablas, aunque el tipo de datos resulte similar. Esto lo digo porque has usado "nombre" indistintamente para provincias, puertos y aeropuertos, lo que en el futuro puede traer consecuencias indeseadas en un JOIN indiscriminado. Sería mejor usar nombreProvincia, nombrePuerto y nombreAeropuerto.
Es conveniente que se usen los mismos nombres solamente en los campos de diferentes tablas que guarden exactamente el mismo dato, como es el caso de las FK de los id que has usado.
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

RE:Consulta en tablas relacionadas

Publicado por luis (2 intervenciones) el 15/09/2008 12:39:48
Gonzalo GC, gracias por la prontitud de tu respuesta. Pero no era esactamente esto lo que yo queria. O almenos eso creo.

He conseguido listar los campos relacionados sin que se repitan con esta consulta:

Select DISTINTIC provincias.idprovincia from provincias, puertos where provincias.idprovincia = puertos.idprovincias

Por lo visto DISTINTIC sirve para que no se repitan entradas iguales y que solo se muestren aquellas que son diferentes.

Respecto a los nombres de camppo en la BD, yo los tengo diferentes pero esto era un ejemplo y los puse asi por simplificar, gracias igualmente.

Saludos y gracias por tu respuesta.
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