我为拥有2011年约会的网站的客户提供客户ID
SELECT customers.id
FROM customers
INNER JOIN sites ON customers.id = sites.customer_id
INNER JOIN appointments ON appointments.site_id = sites.id
WHERE YEAR(appointments.day) = 2011
我希望得到2011年没有任何约会的客户。对于如何去做而感到困惑。
答案 0 :(得分:3)
有两种方式:
SELECT
C.id
FROM
Customers C
WHERE
NOT EXISTS (
SELECT *
FROM
Sites S
INNER JOIN Appointments A ON
A.site_id = S.id AND
YEAR(A.day) = 2011
WHERE
S.customer_id = C.id
)
或:
SELECT DISTINCT
C.id
FROM
Customers C
INNER JOIN Sites S ON
S.customer_id = C.id
LEFT OUTER JOIN Appointments A ON
A.site_id = S.id AND
YEAR(A.day) = 2011
WHERE
A.id IS NULL
答案 1 :(得分:1)
......年纪不到(appointmentments.day)= 2011
答案 2 :(得分:0)
应该做一个答案而不是编辑。由于缩放,不想真正寻找NULL。
SELECT id
FROM customers
WHERE NOT EXISTS (SELECT * FROM sites
INNER JOIN appointments ON appointments.site_id = sites.id
WHERE sites.customer_id = customers.id AND YEAR(appointments.day) = 2011)
答案 3 :(得分:0)
SELECT customers.id
FROM customers, sites, appointments
WHERE (customers.id = sites.customer_id and appointments.id = sites.id)
and YEAR(appointments.day) <> 2011
请检查您的特定数据库服务器“&lt;&gt;”这是“不平等”。