我有Visual Studio 2005,我在VB中编写代码,而不是C +。我需要一个Select语句,并且发现了一些很接近但不适合我的情况。我有三张桌子:
PROJECT
[Projnum]
[ShipDate]
CUSTOMER
[Projnum]
[Jobnum]
TAGS
[Jobnum]
我需要加入CUSTOMER和PROJECT,所以我知道PROJECT.ShipDate为空的所有CUSTOMER.Jobnum记录。在这些记录中,我需要从TAGS.Jobnum获得哪些记录不匹配。
非常感谢任何帮助。谢谢你,查克。
答案 0 :(得分:0)
SELECT c.Jobnum
FROM customer c
INNER JOIN project p
ON c.Projnum = p.Projnum
WHERE p.ShipDate IS NULL
AND NOT EXISTS(SELECT NULL FROM tags t WHERE t.Jobnum = c.Jobnum)
答案 1 :(得分:0)
如果我理解正确:
PROJECT
ProjNum
ShipDate
CUSTOMER
ProjNum
JobNum
TAGS
JobNum
你想要所有未发货的项目:
SELECT c.JobNUm
FROM Project p
INNER JOIN Customer c
ON c.ProjNum = p.ProjNum
WHERE p.ShipDate is null
然后你想要TAGS表中没有JobNum的那些:
SELECT c.JobNUm
FROM Project p
INNER JOIN Customer c
ON c.ProjNum = p.ProjNum
WHERE p.ShipDate is null
AND c.JobNum NOT IN (SELECT JobNum from TAGS)
可以做得更简单,但我想展示我的作品。
答案 2 :(得分:0)
LEFT JOIN
可能比NOT IN
和NOT EXISTS
更快。
SELECT c.JobNUm
FROM Project p
INNER JOIN Customer c
ON c.ProjNum = p.ProjNum
LEFT JOIN tags t ON t.jobnum=c.jobnum
WHERE p.ShipDate is null AND t.jobnum IS NULL