COnsulta SQL para "Nota"

31/08/2007 - 08:30 por Alfredo Marín | Informe spam
Buenos dias, necesito hacer una consulta y no se como hacerla, haber si un
guru de los SELECT, JOIN, y demas me puede ayudar:
Tengo 2 tablas con la siguiente estructura:
Tabla1 campos 1,2,3,4,5
Tabla2 campos 1,2,a,b,c
si hago: Consulta1
SELECT Tabla1.*,Tabla2
FROM Tabla1 INNER JOIN Tabla2
ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
si depues hago: Consulta2
SELECT Tabla1.*,Tabla2
FROM Tabla1 LEFT JOIN Tabla2
ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
obtengo lo mismo que en Consulta1 mas los registros de Tabla1 que no tienen
correspondencia en Tabla2.
Mi pregunta es:
Como puedo hacer una consulta para hacer el resultado de Consulta2 menos el
resultado de Consulta1, es decir, todos los de Tabla1 que NO coinciden con
los de Tabla2.
Me parece algo sencillo de plantear, pero soy incapaz de "traducirlo" a SQL.
De antemano muchas gracias a todos.
Alfredo Marín

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
31/08/2007 - 10:05 | Informe spam
Añade la condición

WHERE Tabla2.2 IS NULL

Por cierto, no te recomiendo que plantees las preguntas para "gurús"
porque habrá gente que no se considere como tal (como yo, sin ir más lejos)
y que no te contesten por sentirse excluidos aunque se sepan la respuesta

"Alfredo Marín" escribió en el
mensaje news:
Buenos dias, necesito hacer una consulta y no se como hacerla, haber si un
guru de los SELECT, JOIN, y demas me puede ayudar:
Tengo 2 tablas con la siguiente estructura:
Tabla1 campos 1,2,3,4,5
Tabla2 campos 1,2,a,b,c
si hago: Consulta1
SELECT Tabla1.*,Tabla2
FROM Tabla1 INNER JOIN Tabla2
ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
si depues hago: Consulta2
SELECT Tabla1.*,Tabla2
FROM Tabla1 LEFT JOIN Tabla2
ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
obtengo lo mismo que en Consulta1 mas los registros de Tabla1 que no
tienen
correspondencia en Tabla2.
Mi pregunta es:
Como puedo hacer una consulta para hacer el resultado de Consulta2 menos
el
resultado de Consulta1, es decir, todos los de Tabla1 que NO coinciden con
los de Tabla2.
Me parece algo sencillo de plantear, pero soy incapaz de "traducirlo" a
SQL.
De antemano muchas gracias a todos.
Alfredo Marín


Respuesta Responder a este mensaje
#2 Alfredo Novoa
31/08/2007 - 12:43 | Informe spam
On Thu, 30 Aug 2007 23:30:00 -0700, Alfredo Marín
wrote:

Como puedo hacer una consulta para hacer el resultado de Consulta2 menos el
resultado de Consulta1, es decir, todos los de Tabla1 que NO coinciden con
los de Tabla2.



Usa "Except".


Saludos
Respuesta Responder a este mensaje
#3 Alejandro Mesa
31/08/2007 - 16:10 | Informe spam
Hola Alfredo,

Las solucion de Carlos y la de Alfredo resuelven el problema. Yo solo quiero
escribir en T-SQL la descripcion del problema.

select a.* -- seleccionar todas las filas de la tabla cuyo alias es a
from tabla1 as a
where not exists ( -- que cumplen que no exista
select *
from tabla2 as b
where b.1 = a.1 and b.2 = a.2 -- alguna fila en tabla2 donde las columnas
machen
)
go


AMB

"Alfredo Marín" wrote:

Buenos dias, necesito hacer una consulta y no se como hacerla, haber si un
guru de los SELECT, JOIN, y demas me puede ayudar:
Tengo 2 tablas con la siguiente estructura:
Tabla1 campos 1,2,3,4,5
Tabla2 campos 1,2,a,b,c
si hago: Consulta1
SELECT Tabla1.*,Tabla2
FROM Tabla1 INNER JOIN Tabla2
ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
si depues hago: Consulta2
SELECT Tabla1.*,Tabla2
FROM Tabla1 LEFT JOIN Tabla2
ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
obtengo lo mismo que en Consulta1 mas los registros de Tabla1 que no tienen
correspondencia en Tabla2.
Mi pregunta es:
Como puedo hacer una consulta para hacer el resultado de Consulta2 menos el
resultado de Consulta1, es decir, todos los de Tabla1 que NO coinciden con
los de Tabla2.
Me parece algo sencillo de plantear, pero soy incapaz de "traducirlo" a SQL.
De antemano muchas gracias a todos.
Alfredo Marín


Respuesta Responder a este mensaje
#4 Alfredo Marín
06/09/2007 - 23:22 | Informe spam
Gracias Carlos por la respuesta, perdon antes que nada por no contestar hasta
ahora, pero no he podido consultarlo hasta ahora, tambien pido disculpas por
usar el término gurú, no pensé que nadie se fuera a sentir excluido por su
uso y lo único que pretendia era dar un tono simpático a mi desesperación,
despues del rollo, he probado lo que me propones:
SELECT Tabla1.*,Tabla2
FROM Tabla1 LEFT JOIN Tabla2
ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
WHERE Tabla 2.2 IS NULL
y parece que funciona, el problema es que no lo entiendo, podrias
explicarmelo? no quiero limitarme a copiar el código y listo.
Saludos,
Alfredo Marín

"Carlos Sacristan" wrote:

Añade la condición

WHERE Tabla2.2 IS NULL

Por cierto, no te recomiendo que plantees las preguntas para "gurús"
porque habrá gente que no se considere como tal (como yo, sin ir más lejos)
y que no te contesten por sentirse excluidos aunque se sepan la respuesta

"Alfredo Marín" escribió en el
mensaje news:
> Buenos dias, necesito hacer una consulta y no se como hacerla, haber si un
> guru de los SELECT, JOIN, y demas me puede ayudar:
> Tengo 2 tablas con la siguiente estructura:
> Tabla1 campos 1,2,3,4,5
> Tabla2 campos 1,2,a,b,c
> si hago: Consulta1
> SELECT Tabla1.*,Tabla2
> FROM Tabla1 INNER JOIN Tabla2
> ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
> si depues hago: Consulta2
> SELECT Tabla1.*,Tabla2
> FROM Tabla1 LEFT JOIN Tabla2
> ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
> obtengo lo mismo que en Consulta1 mas los registros de Tabla1 que no
> tienen
> correspondencia en Tabla2.
> Mi pregunta es:
> Como puedo hacer una consulta para hacer el resultado de Consulta2 menos
> el
> resultado de Consulta1, es decir, todos los de Tabla1 que NO coinciden con
> los de Tabla2.
> Me parece algo sencillo de plantear, pero soy incapaz de "traducirlo" a
> SQL.
> De antemano muchas gracias a todos.
> Alfredo Marín
>
>



Respuesta Responder a este mensaje
#5 Salvador Ramos
08/09/2007 - 14:01 | Informe spam
Hola,

Te paso un par de enlaces donde puedes ampliar información de las outer join
y otros tipos de combinaciones:
Esta forma parte de un curso que te puede interesar:
http://www.sqlmax.com/centro/moduloIII_3.asp?MX
Y otro curso que está muy bien, y que te recomiendo que sigas por completo:
http://www.willydev.net/descargas/C...index.html
El tema de combinaciones externas está en:
Trabajo con bases de datos / Ejecución de consultas / Combinación de varias
tablas / Material teórico

Un saludo
Salvador Ramos

www.helpdna.net (información sobre SQL Server y Microsoft .Net)
www.helpdna.net/acerca_de_salvador_ramos.htm


"Alfredo Marín" escribió en el
mensaje news:
Gracias Carlos por la respuesta, perdon antes que nada por no contestar
hasta
ahora, pero no he podido consultarlo hasta ahora, tambien pido disculpas
por
usar el término gurú, no pensé que nadie se fuera a sentir excluido por su
uso y lo único que pretendia era dar un tono simpático a mi desesperación,
despues del rollo, he probado lo que me propones:
SELECT Tabla1.*,Tabla2
FROM Tabla1 LEFT JOIN Tabla2
ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
WHERE Tabla 2.2 IS NULL
y parece que funciona, el problema es que no lo entiendo, podrias
explicarmelo? no quiero limitarme a copiar el código y listo.
Saludos,
Alfredo Marín

"Carlos Sacristan" wrote:

Añade la condición

WHERE Tabla2.2 IS NULL

Por cierto, no te recomiendo que plantees las preguntas para "gurús"
porque habrá gente que no se considere como tal (como yo, sin ir más
lejos)
y que no te contesten por sentirse excluidos aunque se sepan la respuesta

"Alfredo Marín" escribió en el
mensaje news:
> Buenos dias, necesito hacer una consulta y no se como hacerla, haber si
> un
> guru de los SELECT, JOIN, y demas me puede ayudar:
> Tengo 2 tablas con la siguiente estructura:
> Tabla1 campos 1,2,3,4,5
> Tabla2 campos 1,2,a,b,c
> si hago: Consulta1
> SELECT Tabla1.*,Tabla2
> FROM Tabla1 INNER JOIN Tabla2
> ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
> si depues hago: Consulta2
> SELECT Tabla1.*,Tabla2
> FROM Tabla1 LEFT JOIN Tabla2
> ON (Tabla1.1=Tabla2.1) AND (Tabla1.2=Tabla2.2)
> obtengo lo mismo que en Consulta1 mas los registros de Tabla1 que no
> tienen
> correspondencia en Tabla2.
> Mi pregunta es:
> Como puedo hacer una consulta para hacer el resultado de Consulta2
> menos
> el
> resultado de Consulta1, es decir, todos los de Tabla1 que NO coinciden
> con
> los de Tabla2.
> Me parece algo sencillo de plantear, pero soy incapaz de "traducirlo" a
> SQL.
> De antemano muchas gracias a todos.
> Alfredo Marín
>
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida