[英]Using where on a joined table
我有一個場景,我得到一個包含事件(標題,描述)的表和一個包含標簽(標簽,event_id)的表,其中包含鏈接到每個事件的標簽。
我想要做的是能夠在Events-table中搜索特定的單詞,同時在Tags-table中搜索單詞並獲取找到的Events。
我能夠使用以下SQL搜索事件
"SELECT events.* FROM events WHERE (header = 'query')"
但是當我嘗試用連接包含標簽時,我得不到任何回報
"SELECT events.* FROM events INNER JOIN tags ON tags.events_id =
events.id AND WHERE (events.header = 'query' OR tags.tag = 'query')"
是否有其他方式可以執行連接或我是否需要執行兩個查詢,一個用於事件,一個獲取具有匹配標記的事件?
謝謝!
SELECT
events.*
FROM
events
LEFT JOIN
tags
ON
tags.events_id = events.id
WHERE
tags.tag = 'query' OR
events.header = 'query'
或這個:
SELECT
events.*
FROM
events,
tags
WHERE
events.id = tags.events_id AND
events.header = 'query' AND
tags.tag = 'query'
但是,如果在event.header
或tags.tag
找到查詢,那么你的意思是返回事件,然后使用后者並用OR
替換AND
編輯:
我忘了包含events.id = tags.events_id
語句
在WHERE
之前刪除AND
SELECT events.*
FROM events INNER JOIN tags ON tags.events_id = events.id -- NO AND
WHERE (events.header = 'query' OR tags.tag = 'query')
也許是這樣的:
SELECT
events.*
FROM
events RIGHT OUTER JOIN tags ON events.id = tags.events_id
WHERE
events.header = 'query' OR
tags.tag = 'query'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.