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

Ayuda con consulta

Estas en el tema de Ayuda con consulta en el foro de Bases de Datos General en Foros del Web. Por favor, necesito hacer una consulta sobre dos tablas urgentemente es para el curro y no doy con la "tecla". Tengo dos tablas distintas una ...
  #1 (permalink)  
Antiguo 29/04/2004, 12:19
Avatar de empardopo  
Fecha de Ingreso: abril-2004
Mensajes: 73
Antigüedad: 20 años
Puntos: 0
Ayuda con consulta

Por favor, necesito hacer una consulta sobre dos tablas urgentemente es para el curro y no doy con la "tecla".

Tengo dos tablas distintas una tiene 5 campos y la otra 3, de las que tienen ambas tablas dos campos en común.

Bien necesito realizar una consulta que me devuelva todos los datos de la primera tabla y que no aparecen en la segunda tabla.
Imaginemos :
AB1 AB1 AB2
AB2 BC1 ------------> DEVOLVERÍA BC2
BC1
BC2

Ayuda por favor.
Muchas gracias por adelantado
  #2 (permalink)  
Antiguo 29/04/2004, 13:41
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
"Bien necesito realizar una consulta que me devuelva todos los datos de la primera tabla y que no aparecen en la segunda tabla.
"

Si entiendo bien, sería algo así :

select * from tabla1
where campoEnComun1 not in (select campoEnComun1 from tabla2)
and campoEnComun2 not in (select campoEnComun2 from tabla2)


saludos...
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #3 (permalink)  
Antiguo 30/04/2004, 01:23
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Esa consulta resultará lenta a medida que tengas muchos registros, prueba a hacer algo así:

SELECT Tabla1.* FROM Tabla1 Left JOIN Tabla2 ON Tabla1.Campo1 = Tabla2.Campo2 AND Tabla1.Campo2 = Tabla2.Campo2 WHERE (Tabla2.Campo1) Is Null

Un saludo
  #4 (permalink)  
Antiguo 30/04/2004, 04:54
Avatar de empardopo  
Fecha de Ingreso: abril-2004
Mensajes: 73
Antigüedad: 20 años
Puntos: 0
Muchas gracias ante todo Sr Matrix, pero lo he probado y no me funciona.
Intento aclararlo un poco mejor pq creo que lo deje un poco confuso:

Por favor, necesito hacer una consulta sobre dos tablas urgentemente es para el curro y no doy con la "tecla".

Tengo dos tablas distintas una tiene 5 campos y la otra 3, de las que tienen ambas tablas dos campos en común.

Bien necesito realizar una consulta que me devuelva todos los datos de la primera tabla y que no aparecen en la segunda tabla.
Imaginemos :
JKAB1 XB1 JKAB2
JKAB2 YC1 ------------> DEVOLVERÍA JKBC2
JKBC1 ZD1
JKBC2

Los datos que sirven para comparar serían el 4 y el 5.(Es decir, miro en la tabla2 (B1,C1 y D1) y los busco en la tabla1,
por supuesto columnas 4 y 5, y solo mostraré las que no aparezcan.
Es decir, devuelve solo los datos de la tabla1 que no están en la tabla2 e ignora los datos de la tabla2 que aparezcan y no
esten en la tabla1.
Ayuda por favor.
Muchas gracias por adelantado
  #5 (permalink)  
Antiguo 30/04/2004, 07:29
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
a ver.... estoy hecho un lío tratando de entender... errr...
entiendo esto ahora:
Necesitas mostrar "los datos de a tabla 1 que no estén en la tabla 2 e ignorar los datos de la tabla 2 que aparezcan y no estén en la tabla2"
Para eso según veo te sirven las consultas anteriores.... o.. ¿quieres mostrar también los datos de la tabla 2 que no estén en la tabla 1?


Ahora esto sí que de frentón no lo entiendo (perdón por la ignorancia):

------------------------------------------------------
Imaginemos :
JKAB1 XB1 JKAB2
JKAB2 YC1 ------------> DEVOLVERÍA JKBC2
JKBC1 ZD1
JKBC2
------------------------------------------------------

Qué cosa de ahí son los campos? qué los registros? qué las tablas??? u_U

saludos

Última edición por Sir Matrix; 30/04/2004 a las 07:31
  #6 (permalink)  
Antiguo 30/04/2004, 08:52
Avatar de empardopo  
Fecha de Ingreso: abril-2004
Mensajes: 73
Antigüedad: 20 años
Puntos: 0
Muchas gracias Teri y Matrix a los dos,
he resuelto el problema con la contestación anterior de Teri, lo que por favor me gustaria me explicases es el significado de LEFT INNER y la última claúsula WHERE de IS NULL (si la quito no me funciona)
Resumiendo como otras cosas en informática, he conseguido que funcione pero no se el porqué.

Un saludo y gracias.
  #7 (permalink)  
Antiguo 03/05/2004, 03:37
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
El LEFT es para indicar que quieres todos lo datos de la tabla de la parte izquierda, en este caso, Tabla1, si pusieras INNER JOIN obtendrías sólo aquellos datos que coincidan en ambas tablas, y si pones RIGHT obtendrás todos los registros de la parte derecha de la consulta.

Y el WHERE, la parte importante para que muestre los que no aparecen.

Le dices que te de los datos que al relacionar la tabla1, con la tabla2, el campo Tabla2.CampoX sea nulo, es decir no existe en esa tabla.

No sé si se entiende ¿¿¿???
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:35.