簡體   English   中英

自定義聯接查詢以從3個表中獲取記錄

[英]custom join query to get record from 3 table

我在mysql數據庫中有3個表,如下所示

表1:視頻

id    name
1     one
2     two
3     three

表2:標簽

id    name
1     stage=test
2     age=under18

表3:tags_to_items ,其中tags_id = tags.iditem_id = videos.id

tag_id    item_id
1         1
2         2
2         1
1         3 

這里item_id 1有2個標簽。 我想選擇所有記錄videos表,其中tag_id=1tag_id=2 因此輸出應為video.id=1

請先幫助我做到這一點,謝謝。

您真的不需要來自視頻的任何查詢或加入。 只需執行到目前為止所需的操作即可:

SELECT item_id as VIDEO_ID 
   SUM(CASE WHEN tag_id = 1 THEN 1 ELSE 0 END) as tag_1,
   SUM(CASE WHEN tag_id = 2 THEN 1 ELSE 0 END) as tag_2
FROM tags_to items
WHERE tag_id = 1 or tag_id = 2
GROUP BY VIDEO_ID
HAVING tag_1>0 AND tag_2>0
SELECT * FROM videos WHERE id IN (SELECT item_id FROM tags_to_items WHERE tag_id IN (1,2) )

您可以這樣:

            SELECT t1.tag_id, t1.item_id, t2.name AS tagName, t3.name AS videoName FROM tags_to_items AS t1

            LEFT JOIN tags AS t2 ON t1.tag_id=t2.id

            LEFT JOIN videos AS t3 ON t1.item_id=t3.id

            WHERE t1.tag_id IN (1,2)

暫無
暫無

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

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