Cómo unir resultados de 2 tablas basadas en no condición
Tengo 2 mesas, digamosTableA
& TableB
definido así:
crear tabla TableA (id int, nombre varchar (20), partNumber varchar (30));
con valores como:
insert into TableA values(1,'a1','10');
insert into TableA values(2,'a2','20');
insert into TableA values(3,'a3','30');
insert into TableA values(4,'a4','40');
crear tabla TableB (id int, nombre varchar (20), partNumber varchar (30));
insert into TableB values(5,'b1','10');
insert into TableB values(6,'b2','20');
insert into TableB values(7,'b3','60');
insert into TableB values(8,'b4','70');
Ahora en el resultado quiero unir ambas tablas y obtener todos los registros deTableB
y solo esos registros deTableA
donde elTableA's partNumber
valor de columna que no coincide con ningún valor deTableB's partNumber
.
He intentado las consultas a continuación y todas dieron el mismo resultado de 14 registros, lo cual no es correcto.
Consulta 1:
seleccione b.id como Oferta, b.name como Bname, b.partNumber como BPart, a.id como Aid, a.name como Aname, a.partNumber como APart de la TablaB b izquierda, únase a TableA a en a.partNumber! = b .partNumber;
Consulta 2:
seleccione b.id como Bid, b.name como Bname, b.partNumber como BPart, a.id como Aid, a.name como Aname, a.partNumber como APart de TableB b, TableA a donde a.partNumber! = b. número de parte;
Consulta 3:
seleccione b.id como Oferta, b.name como Bname, b.partNumber como BPart, a.id como Aid, a.name como Aname, a.partNumber como APart de la TablaB b izquierda unirse a TableA a en a.partNumber no en ( seleccione a.id como Ayuda de TableB b únete a TableA a en a.partNumber = b.partNumber);
¿Puede alguien ayudarme donde estoy cometiendo un error aquí? cuál es la forma correcta de obtener los resultados.
Espero que la salida sea así:
+------+-------+-------+------+-------+-------+
| Bid | Bname | BPart | Aid | Aname | APart |
+------+-------+-------+------+-------+-------+
| 5 | b1 | 10 | 3 | a3 | 30 |
| 5 | b1 | 10 | 4 | a4 | 40 |
| 6 | b2 | 20 | 3 | a3 | 30 |
| 6 | b2 | 20 | 4 | a4 | 40 |
| 7 | b3 | 60 | 3 | a3 | 30 |
| 7 | b3 | 60 | 4 | a4 | 40 |
| 8 | b4 | 70 | 3 | a3 | 30 |
| 8 | b4 | 70 | 4 | a4 | 40 |
+------+-------+-------+------+-------+-------+
Entonces, lo que quiero decir es que no quiero los registros deTableA
dóndepartNumber
es10, 20
porque los valores están presentes enTableB's partNumber
.