Eu tenho duas tabelas : Part
, OrderLine
:
Part (PartNum PK, PartDesc, Price)
OrderLine (OrderNum PK, PartNum PK, QtyOrdered)
E eu quero descobrir as peças que não foram encomendadas. Acho que tenho uma boa ideia, mas posso estar perdendo alguma coisa; Eu acho que provavelmente na sintaxe. Por favor, verifique:
select Part.PartNum
,OrderLine.OrderNum
from OrderLine
inner join Part on OrderLine.PartNum = Part.PartNum
where PartNum not in (
select distinct (OrderNum)
from OrderLine
)
Isso está correto?
Se você quiser as peças que não foram encomendadas, comece com
Part
, nãoOrderLine
. Quando você está pensando em conjuntos, esse é o único que poderia ter os itens que você está procurando. Part pode ser um superconjunto de peças ordenadas e OrderLine pode facilmente ser um subconjunto de peças.Na maioria das vezes, comparar números inteiros será muito mais eficiente do que strings, então alterei a
WHERE
cláusula para procurar PartNums, não PartNames.