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

Sólo registros usados

Estas en el tema de Sólo registros usados en el foro de Bases de Datos General en Foros del Web. Hola a todos Necesito mostrar los registros de una tabla con la condición de que estén relacionados con otra tabla. Por ejemplo: Tengo en una ...
  #1 (permalink)  
Antiguo 15/01/2004, 17:20
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Sólo registros usados

Hola a todos

Necesito mostrar los registros de una tabla con la condición de que estén relacionados con otra tabla. Por ejemplo:

Tengo en una tabla una lista de ciudades y tiene sólo dos campos: idCiudad y nombreCiudad

Por otro lado tengo una lista de casas en otra tabla con estos campos:
idCasa, nombreCasa, ... , idCiudad

Entonces hago un query para tener una lista de las ciudades para que, cuando se le haga clic, me despliegue una lista de las casas que hay ahí.

Hasta acá todo bien, pero lo que quiero es que esa lista que se genere de la tabla ciudades sólo devuelva aquellas cuya id ha sido usada en la tabla de casas

Por ejemplo:
Tengo en las ciudades "1,Springfield | 2,Piedradura | 3,Arkham"
Y tengo en casas: "1,Simpson,1 | 2,Flanders, 1 | 3,Picapiedra,2"

Es decir, Simpson y Flanders están en Springfield, Picapiedra está en Piedradura, pero en Arkham no hay ninguna casa, luego entonces en la lista de ciudades no aparecerá Arkham.

Sí, se que borrando el registro Arkham sería más fácil, pero me sirve en otro lado, y no lo puedo borrar.

Entonces lo que quiero es un query que en pseudocódigo haga esto:

SELECT *
FROM ciudades, casas
WHERE ciudades.idCiudad SEA USADA EN casas.idCiudad

¿Es posible?

Espero haber sido claro explicándome.

De antemano muchas gracias por la ayuda.
  #2 (permalink)  
Antiguo 15/01/2004, 19:48
Avatar de hpvalle  
Fecha de Ingreso: diciembre-2003
Ubicación: Nuevo Laredo, Tamaulipas
Mensajes: 32
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola, creo que la siguiente sentencia te devuelve lo que necesitas:

SELECT A.IDCIUDAD, A.NOMBRECIUDAD, B.IDCASA, B.NOMBRECASA
FROM CIUDADES A
JOIN CASAS B ON (B.IDCIUDAD=A.IDCIUDAD)

Esto te va a devolver un conjunto de registros en donde exista union entre los campos idciudad de ambas tablas, de manera que si acaso tienes ciudades que no esten enlazadas con la tabla de casas no van a aparecer.

Espero que esto haya resuelto tu problema.
__________________
No hagas a los demas lo que no quieras que te hagan.
  #3 (permalink)  
Antiguo 15/01/2004, 22:26
Avatar de Escoffie  
Fecha de Ingreso: abril-2003
Ubicación: Mérida, Yucatán
Mensajes: 242
Antigüedad: 21 años
Puntos: 9
Hola hpvalle:

Sí me sirvió, excelente!!!

Ni investigaré más sobre ese JOIN... (soy aprendiz, jeje!)

Muchas gracias.
  #4 (permalink)  
Antiguo 16/01/2004, 12:48
Avatar de hpvalle  
Fecha de Ingreso: diciembre-2003
Ubicación: Nuevo Laredo, Tamaulipas
Mensajes: 32
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola Escoffie, que bueno que te sirvio de algo el ejemplo que te puse, ahora solo como un agregado te comento que si acaso tambien quisieras ver aquellas ciudades que no estan enlazadas solo tendrias que agregar la palabla LEFT antes de la palabra JOIN y listo...tal vez en otra ocasion te pueda servir de algo saber esto.

Saludos.
__________________
No hagas a los demas lo que no quieras que te hagan.
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 11:51.