簡體   English   中英

在連接表上使用where

[英]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.headertags.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM