[英]how exclude the query result from three different tables?
我有3個表格,其中包含countries
和transactions
offers
,而我要嘗試的是從特定國家和設備中提取報價,我已經使用以下公式進行了操作:
SELECT
*
FROM countries a
INNER JOIN offers b ON a.id = b.offer_id
WHERE a.country = "US"
AND b.device = 'all'
UNION
SELECT
*
FROM countries a
INNER JOIN offers b ON a.id = b.offer_id
WHERE a.country = "US"
AND b.device LIKE 'iphone%';
此代碼有效,但現在我想排除表users
和transactions
之間具有相同ref
的報價
它應該工作的方式是:
transactions
注冊。 現在,我可以執行第3步,但不能執行第4步。 有什么幫助嗎?
這是表的示例: SQL Fiddle
提前致謝
編輯
如果我把所有這些放在詞上,將會是:
Select all from *offers* where the **offer_id** match with **ID** from *countries* with the **country** "US" and also from *offers* have the **device** "iPhone" now exclude from *transactions* the offers with the **user** = "xxxxx"
我希望這可以解釋我要做什么
無法查看查詢是如何針對特定用戶的,但是要排除交易中引用的商品,您可以使用NOT EXISTS
SELECT *
FROM countries a
INNER JOIN offers b ON a.id=b.offer_id
WHERE a.country="US" AND b.device = 'all'
AND NOT EXISTS (SELECT 1 FROM transactions t WHERE t.offer = b.offer_Id)
您可以通過LEFT OUTER JOIN
事務表的LEFT OUTER JOIN
解決。
我在WHERE子句中添加了t.id IS NULL
。 因此,您的結果將僅顯示沒有交易的報價。
SELECT *
FROM countries a
INNER JOIN offers b
ON a.id = b.offer_id
LEFT OUTER JOIN transactions t
ON t.id = b.offer_id
WHERE a.country = "US"
AND t.id IS NULL
關於您的問題,我仍然不清楚表users
和countries
如何連接。
這是一個重要的細節,因為LEFT OUTER JOIN
應該只是從該特定用戶那里獲取交易。 因此,條件transactions.user = user.ref
也應添加到transactions.user = user.ref
。
每當您向我解釋此鏈接時,都會更新答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.