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