我有6個表:用戶,期刊,文件,標誌,flag_details
MySQL的6張桌子一起參加一個查詢
users (id, avatar, fullname)
journals (id, container, container_id, user_id, title)
files (id, container, container_id, user_id, title)
flags (id, container, container_id, total)
flag_details (id, container, container_id, reason, comment, user_id)
trend_item (id, container, container_id, user_id)
關係爲:
if(flags.container='look') then flags.container_id = journals.id
所以我從所有記錄期刊表
if(flags.container='photo') then flags.container_id = files.id
所以我把所有記錄從fi萊表
if(flags.container='trend') then flags.container_id = trend_item.id
,所以我需要的所有記錄從trend_item表
所以我的看法是這樣的:
ID |容器|東西|總標記
1 |看| | 123 - guy | 2
2 |照片| 321 - budi | 4
3 |趨勢| 345 - elvis | 3
4 |看| | 876 - 罐| | 6
,所以我得到了這樣的查詢:
SELECT DISTINCT (id), created_at, container, IF(container = 'look', (
SELECT a.container_id
FROM flags a, journals b
WHERE a.container_id = b.id
), IF(container = 'photo', (
SELECT a.container_id
FROM flags a, files b
WHERE a.container_id = b.id
), (
SELECT a.container_id
FROM flags a, trend_items b
WHERE a.container_id = b.id
))) , total,
`status`
FROM flags
ORDER BY created_at DESC
但答案是子查詢回報多於排
更多有任何可能的,如果這一切在一個查詢放在一起?
對不起我的英語很差
感謝大家!
mysql返回空結果集,有沒有其他的想法? – 2012-07-06 10:09:22
該死的,我的壞。 )當然,在這種情況下應該使用LEFT JOIN。 – raina77ow 2012-07-06 10:58:09
沒問題,有沒有其他的想法和解決辦法? – 2012-07-07 02:16:12