簡體   English   中英

SQL:SQL連接幫助

[英]SQL: help with sql joins

嗨,我有一個具有帖子,標簽和tag_ref鏈接表的應用。 我想查詢具有特定標簽關聯的帖子。

數據庫結構如下:

帖子

ID

tags_ref

row_id

tag_id

標簽

ID

safe_tag

標簽

我的查詢基本上是如果$ safe_tag不為null,然后在post.id = tags_ref.row_id上加入tags_ref,在tags_ref.tag_id = tags.id上加入標簽,其中tags_ref.table ='posts'和tags.safe_tag ='food'並且post.city_id = 2

這個查詢正確嗎? 我使用的連接類型正確嗎?

SELECT *
FROM (`posts`)
INNER JOIN `tags_ref` ON `posts`.`id` = `tags_ref`.`row_id`
INNER JOIN `tags` ON `tags_ref`.`tag_id` = `tags`.`id`
WHERE `tags_ref`.`table` = 'posts'
AND `tags`.`safe_tag` = 'food'
AND `posts`.`city_id` = '2' 

我得到的奇怪結果根本沒有關聯的標簽。

謝謝

這將只返回posts表中的結果,而不是join表中的所有列。 我已經刪除了您尚未在問題文本中指定的city_id約束(並且在查詢中指定):

SELECT P.*
FROM posts AS P
  INNER JOIN tags_ref AS TR ON P.id = TR.row_id
  INNER JOIN tags AS T ON TR.tag_id = T.id
WHERE TR.table = 'posts'
AND T.safe_tag = 'food'

我還添加了表別名並刪除了引用。

如果您沒有得到任何結果,那將向我暗示沒有food張貼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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