[英]Mysql Complex Select Query in 5 table
我有5張桌子:
喜歡表:
╔════════╦══════════╦═════════╦═════════════╦═════════════════════╗
║ id ║ user_id ║ type_id ║ target_id ║ like_date ║
╠════════╬══════════╬═════════╬═════════════╬═════════════════════╣
║ 1 ║ 1 ║ 1 ║ 1049 ║ 2016-05-23 19:50:41 ║
╠════════╬══════════╬═════════╬═════════════╬═════════════════════╣
║ 2 ║ 2 ║ 2 ║ 457 ║ 2016-01-09 19:50:42 ║
╠════════╬══════════╬═════════╬═════════════╬═════════════════════╣
║ 3 ║ 2 ║ 3 ║ 457 ║ 2016-01-09 19:50:42 ║
╠════════╬══════════╬═════════╬═════════════╬═════════════════════╣
║ 4 ║ 2 ║ 1 ║ 457 ║ 2016-01-09 19:50:42 ║
╠════════╬══════════╬═════════╬═════════════╬═════════════════════╣
║ 5 ║ 3 ║ 3 ║ 4955 ║ 2016-06-12 19:50:41 ║
╚════════╩══════════╩═════════╩═════════════╩═════════════════════╝
type_id
列:
我需要這樣的查詢:
select col1, col2, col3
from likes, mp3s, albums, remixes
where likes.user_id == 2
if (likes.type_id == 1)
select col1, col2, col3
from mp3s
where likes.target_id == mp3s.id
union
if (likes.type_id == 2)
select col1, col2, col3
from albums
where likes.target_id == albums.id
union
if (likes.type_id == 3)
select col1, col2, col3
from remixes
where likes.target_id == remixes.id
order by likes.like_date desc
limit 0,20
謝謝。
您需要使用聯合和聯接
這將選擇所有有效的mp3行。
select
col1, col2, col3
from
likes
inner join
mp3s
on likes.target_id = mp3s.id
where likes.type_id = 1 -- type is mp3
現在,讓我不為您做所有工作-再創建兩個查詢以獲取混音和專輯-然后加入他們,也許可以加入工會?
嘗試這個:
SELECT IF(likes.type_id = 1, mp3s.col1, IF(likes.type_id = 2, albums.col1, remixes.col1)) col1,
IF(likes.type_id = 1, mp3s.col2, IF(likes.type_id = 2, albums.col2, remixes.col2)) col2,
IF(likes.type_id = 1, mp3s.col3, IF(likes.type_id = 2, albums.col3, remixes.col3)) col3
FROM
likes
LEFT JOIN mp3s
ON likes.type_id = 1 AND likes.target_id == mp3s.id
LEFT JOIN albums
ON likes.type_id = 2 AND likes.target_id == albums.id
LEFT JOIN remixes
ON likes.type_id = 3 AND likes.target_id == remixes.id
WHERE likes.user_id == 2
ORDER BY likes.type_id, likes.like_date desc
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.