Como associar resultados de 2 tabelas com base na não condição
Eu tenho 2 mesas, digamosTableA
& TableB
definido assim:
criar tabela TableA (id int, nome varchar (20), partNumber varchar (30));
com 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');
criar tabela TableB (id int, nome 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');
Agora, no resultado, quero unir as duas tabelas e obter todos os registros deTableB
e apenas os registros deTableA
onde oTableA's partNumber
valor da coluna que não corresponde a nenhum valor deTableB's partNumber
.
Eu tentei abaixo consultas e todos eles deram o mesmo resultado de 14 registros que não está correto.
Consulta 1:
selecione b.id como Bid, b.name como Bname, b.partNumber como BPart, a.id como Aid, a.name como Aname, a.partNumber como APart da TabelaB b junte-se à TableA a em a.partNumber! = b .número da peça;
Consulta 2:
selecione b.id como Bid, b.name como Bname, b.partNumber como BPart, a.id como Aid, a.name como Aname, a.partNumber como APart da TabelaB b, TableA a onde a.partNumber! = b. número da peça;
Consulta 3:
selecione b.id como Bid, b.name como Bname, b.partNumber como BPart, a.id como Aid, a.name como Aname, a.partNumber como APart da tabelaB b junte-se à TableA a em a.partNumber que não está em ( selecione a.id como Ajuda da Tabela B b junte-se à Tabela A a em a.partNumber = b.partNumber);
Alguém pode me ajudar onde estou cometendo um erro aqui? Qual é a maneira correta de obter os resultados.
Estou esperando que a saída seja assim:
+------+-------+-------+------+-------+-------+
| 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 |
+------+-------+-------+------+-------+-------+
Então aqui o que eu quero dizer é no resultado que eu não quero os registros deTableA
OndepartNumber
é10, 20
porque os valores estão presentes emTableB's partNumber
.