Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-03-2007
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
Exception Join

Hola!
quiero hacer una sql que con estos datos
Código:
 
Tabla A                   TablaB
CampoA  CampoB            CampoA  CampoB
A           1               A       1 
A           2               C       3
C           3               D       2
D           2
me de el registro A 2 (el segundo de la Tabla A ).
Es algo así a hacer justo lo contrario a un INNER JOIN:


Código SQL [-]
Select * from TablaA A inner join TablaB B 
  on A.CampoA = B.CampoA and A.CampoB = B.CampoB




Este me daría los otros tres registros. Justo quiero lo contrario a esto. En AS/400 hay una sentencia que es Exceptioon Join, pero en delphi me da error.
¿Alguien sabe como hacerlo?

Gracias!
Jon

Uso delphi3, paradox
Responder Con Cita
  #2  
Antiguo 22-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Supongo que lo que necesitas es una consulta que te muestre los registros de la tabla A que no tengan registros relacionados en la tabla B.

Si tienes un campo único en la tabla A (un Id o Código), la consulta es más o menos sencilla:
Código SQL [-]
  Select * from TablaA where Id not in (Select Id from TablaA A inner join TablaB B on A.CampoA = B.CampoA and A.CampoB = B.CampoB)
Vamos, que le damos la vuelta a la consulta con el operador "not in".

Si ese no es el caso, se complica un poco (no mucho):
Código SQL [-]
  Select * from TablaA as A where (select count(CampoA) from TablaB as B where B.CampoA = A.CampoA and B.CampoB = A.CampoB) = 0
Responder Con Cita
  #3  
Antiguo 22-03-2007
jonmendi jonmendi is offline
Miembro
 
Registrado: dic 2004
Posts: 110
Poder: 20
jonmendi Va por buen camino
gracias basti!

pero la primera sql no funciona pq la select del inner join nos devuelve el valor A para el campoA, por lo que al hacer el not in , pues no devuelve nada.
(la select del inner join devolvería los registros A, C, D, y claro nos encuentra el A, con lo que no funciona.)

la segunda sql tampoco funciona. Además no veo muy claro el uso del count.

Muchas gracias de todos modos.
Jon
Responder Con Cita
  #4  
Antiguo 22-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Acabo de crear las tablas con los ejemplos que pusiste arriba y funcionan ambas consultas. En ambos casos me devuelve un registro con los valores CampoA = 'A' y CampoB= 2.

El count lo que hace en la segunda consulta es contar cuantos registros hay en la tablaB que también estén en la tablaA. Si es igual a 0 es que no hay registros en la tablaB iguales al de la TablaA.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
usando LEFT JOIN o RIGHT JOIN alcides SQL 8 03-05-2007 17:35:46
LEFT INNER JOIN & RIGHT INNER JOIN Cabanyaler MS SQL Server 11 07-11-2005 18:09:58
LEFT OUTER JOIN e INNER JOIN Juntos alcides SQL 3 08-07-2005 18:06:27
exception arieliten Conexión con bases de datos 3 21-04-2005 00:27:59
Error de exception jgutti Varios 1 20-11-2003 02:03:15


La franja horaria es GMT +2. Ahora son las 06:34:12.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi