雖然我不清楚根據您的確切過濾或訂購要求,我認爲您可能想從以下開始。
SELECT customer_id, last_name, card_expires
FROM customers
left join (
SELECT card_expires
FROM orders
) o on (customers.customer_id = orders.customer_id)
使用這種方法,你可以看到所有客戶和card_expires的完整列表,然後你就可以開始下到你想要的過濾列表。您可以根據訂單構建子查詢以選擇特定的訂單子集。我再次不清楚你準備做什麼。但是通過首先選擇所有信息,您將能夠看到所有信息,並能夠決定要過濾的內容。
您可能會決定您還希望查看訂單表中的更多列,以幫助您決定包含/排除哪些訂單。
如果你想只看到客戶的名單。如果你想看到的只是客戶WITHOUT,在未來到期一張卡片,沒有card_expires進入
SELECT customer_id, last_name, card_expires
FROM customers
left join (
SELECT card_expires
FROM orders
) o on (customers.customer_id = orders.customer_id)
where o.card_expires is null
。
SELECT customer_id, last_name, card_expires
FROM customers
left join (
SELECT card_expires
FROM orders
where card_expires > now()
) o on (customers.customer_id = orders.customer_id)
where o.card_expires is null
當各具特色的SQL語句,這東西可以使它更容易做的先創建返回所有你會使用,以濾除列表中列的SQL語句,則應用過濾器。這將使您可以更輕鬆地添加和刪除標準,直到您擁有正確的標準。
我喜歡將每個標準分割到自己的單獨行中,這樣我就可以輕鬆地用兩條破折號註釋行。 EX:
SELECT customer_id, last_name, card_expires
FROM customers
left join (
SELECT card_expires
FROM orders
where card_expires > now()
) o on (customers.customer_id = orders.customer_id)
where 0=0
and o.card_expires is null
-- and last_name = 'Smith'
什麼是'card_expires'?一個約會 ?一個布爾? ... – Enissay
它的一個日期,我有多行不同的日期,如1行是4/20,另一個是5/18 – xTuckii