Ayuda con consulta en SQL

Vanel

Bovino maduro
#1
Estimados amigos bakunos que tal muy buen día, estoy aquí con una terrible duda, quizás y sea muy fácil pero francamente a mí me está dando muchos dolores de cabeza :(... bueno el problema es el siguiente:

Tengo una base de datos con dos tablas:

Tabla1

Equipos -------- Usuarios
RSUOFI9087D ---- JUAN LOPEZ
RSUTAB9867L ---- CARLOS PEREZ
RSUCHS1256D ---- MANUEL VALDEZ

Tabla2

Equipos ------- Usuarios
RSUOFI9087D ---- JUAN LOPEZ
RSUOAX8723V ---- TOMAS GARCIA
RSUCHS0078V ---- ROMAN ROBLES

Entonces lo que quiero hacer es una consulta, la cual compare las dos tablas y los registros que no coinciden me los inserte en una tabla Temporal con las mismas columnas de las tablas anteriores...

El resultado esperando es este:

Temporal8

Equipos ------- Usuarios
RSUTAB9867L ---- CARLOS PEREZ
RSUCHS1256D ---- MANUEL VALDEZ
RSUOAX8723V ---- TOMAS GARCIA
RSUCHS0078V ---- ROMAN ROBLES

Los 4 registros anteriores son los que no coinciden en la Tabla1 y Tabla2, pero el problema es que ambas tablas no tienen ninguna relación, solamente son tablas con esos registros guardados, simplemente para almacenar la información, entonces hasta ahorita no he podido hacer la consulta y la inserción de los no coincidentes.

Miren estas dos consultas he estado utilizando y ninguna me ha dado el resultado esperando:

Consultas:

Código:
INSERT INTO Temporal SELECT Equipos, Usuarios FROM Tabla1WHERE NOT EXISTS (SELECT Equipos, Usuarios FROM Tabla2 WHERE Tabla1.equipos=Tabla2.equipos)
Código:
SELECT * FROM Tabla1 WHERE Equips NOT IN (SELECT Equips FROM Tabla2)
Esas dos consultas me devuelven las dos columnas Equipos y Usuarios pero no traen ningún resultado, alguna sugerencia?...

Muchas gracias por su atención y su cordial ayuda, cualquier duda favor de hacérmela saber.
 

maweeVR

Bovino maduro
#2
INSERT INTO TEMPORAL SELECT EQUIPOS,USUARIOS FROM TABLA 1 WHERE EQUIPOS NOT IN (SELECT EQUIPOS FROM TABLA1 ) AND
EQUIPOS NOT IN (SELECT EQUIPOS FROM TABLA2 )

PRUEBA CON ESTA SENTENCIA, A LO MEJOR TE AYUDE, ESPERO HABERTE AYUDADO SALU2
 

mendigos1

Bovino adolescente
#3
Una forma facil sin pensarle mucho seria asi .... primero sacas a una consulta de los que si son iguales entre tus dos tablas, y despues
buscas los que no estan en el reultado que obtuviste, osea, si ponemos a tus tablas los nombres de temp1 y temp2 quedaria asi

select * from tmp1 where tmp1.usuarios not in (
SELECT DISTINCT tmp1.usuarios
FROM tmp1 INNER JOIN tmp2 ON (tmp1.usuarios = tmp2.usuarios) AND (tmp1.equipos = tmp2.equipos))
union
select * from tmp2 where tmp2.usuarios not in (
SELECT DISTINCT tmp1.usuarios
FROM tmp1 INNER JOIN tmp2 ON (tmp1.usuarios = tmp2.usuarios) AND (tmp1.equipos = tmp2.equipos));

Saludos
 

ProfesiorX

Bovino adolescente
#4
Bueno, no se que motor de base de datos estes utilizando, pero si estas usando SQL Server estas de suerte

Código:
select equipos, usuarios into temporal
from
(
(select equipos, usuarios from tabla1 except select equipos, usuarios from tabla2)
union
(select equipos, usuarios from tabla2 except select equipos, usuarios from tabla1)
) as tabla3;
Funciona en SQL Server, desconozco en otros motores de bases de datos si funcione

Saludos :)
 

mendigos1

Bovino adolescente
#5
Pones tu tabla uno temp1 y la otra temp2, y asi seria una forma sencilla sin pensarle mucho



select * from tmp1 where tmp1.usuarios not in (
SELECT DISTINCT tmp1.usuarios
FROM tmp1 INNER JOIN tmp2 ON (tmp1.usuarios = tmp2.usuarios) AND (tmp1.equipos = tmp2.equipos))
union
select * from tmp2 where tmp2.usuarios not in (
SELECT DISTINCT tmp1.usuarios
FROM tmp1 INNER JOIN tmp2 ON (tmp1.usuarios = tmp2.usuarios) AND (tmp1.equipos = tmp2.equipos));
 

Vanel

Bovino maduro
#6
Muchas gracias por tu respuesta amigo, si me funciono esa consulta, pero olvide mencionarte que lo unico que debe ser comparado son las columnas Equipos de ambas tablas jeje, ya que Usuarios el nombre va a varias, pero los Equipos no, entonces tengo que encontrar los no coincidentes de Equipos.

De antemano muchas gracias por tu tiempo y ayuda... espero que puedas darme una mano con lo esto ultimo jeje :D
 

Vanel

Bovino maduro
#7
Pones tu tabla uno temp1 y la otra temp2, y asi seria una forma sencilla sin pensarle mucho



select * from tmp1 where tmp1.usuarios not in (
SELECT DISTINCT tmp1.usuarios
FROM tmp1 INNER JOIN tmp2 ON (tmp1.usuarios = tmp2.usuarios) AND (tmp1.equipos = tmp2.equipos))
union
select * from tmp2 where tmp2.usuarios not in (
SELECT DISTINCT tmp1.usuarios
FROM tmp1 INNER JOIN tmp2 ON (tmp1.usuarios = tmp2.usuarios) AND (tmp1.equipos = tmp2.equipos));
Muchas gracias por tu respuesta amigo, si me funciono esa consulta, pero olvide mencionarte que lo unico que debe ser comparado son las columnas Equipos de ambas tablas jeje, ya que Usuarios el nombre va a varias, pero los Equipos no, entonces tengo que encontrar los no coincidentes de Equipos.

De antemano muchas gracias por tu tiempo y ayuda... espero que puedas darme una mano con lo esto ultimo jeje
 

Vanel

Bovino maduro
#8
Una forma facil sin pensarle mucho seria asi .... primero sacas a una consulta de los que si son iguales entre tus dos tablas, y despues
buscas los que no estan en el reultado que obtuviste, osea, si ponemos a tus tablas los nombres de temp1 y temp2 quedaria asi

select * from tmp1 where tmp1.usuarios not in (
SELECT DISTINCT tmp1.usuarios
FROM tmp1 INNER JOIN tmp2 ON (tmp1.usuarios = tmp2.usuarios) AND (tmp1.equipos = tmp2.equipos))
union
select * from tmp2 where tmp2.usuarios not in (
SELECT DISTINCT tmp1.usuarios
FROM tmp1 INNER JOIN tmp2 ON (tmp1.usuarios = tmp2.usuarios) AND (tmp1.equipos = tmp2.equipos));

Saludos
Muchas gracias por tu respuesta amigo, si me funciono esa consulta, pero olvide mencionarte que lo unico que debe ser comparado son las columnas Equipos de ambas tablas jeje, ya que Usuarios el nombre va a varias, pero los Equipos no, entonces tengo que encontrar los no coincidentes de Equipos.

De antemano muchas gracias por tu tiempo y ayuda... espero que puedas darme una mano con lo esto ultimo jeje
 
Arriba