1
我有以下情形:使用1個查詢獲取2個相關組?
- 1項表
- 1成員表
- 1頁表
每一個 「項目」 屬於 「會員」 和「頁「
$query = mysql_query("SELECT i.id, i.title, mem.realname, p.pagename
FROM items AS i
LEFT JOIN members AS mem ON (mem.ID_MEMBER = i.author)
LEFT JOIN pages AS p ON (p.id = i.page)
WHERE i.id LIKE '$item_id'");
這給出了我需要的基本信息:
- ID:3,標題:音樂視頻,真實姓名:彼得·史密斯,頁面名稱有:Youtube
那麼我要爲是獲得2個獨立的 「3個相關的項目」,其中組:
- id.author =彼得·史密斯
- id.page =的Youtube
所以輸出會是這樣的:
ID:3,標題:音樂視頻,實名:彼得·史密斯,頁面名有:Youtube
項從彼得·史密斯:第5項,第4項,第8項(隨機顯示)
- 從Youtube
項目:項目1,項目2,第9項(隨機顯示)
我需要執行2個額外的查詢來獲得這些信息?或者我可以將它包裝在所有的查詢中?
非常感謝!
UPDATE:
我加入由@valex
SELECT i.id, i.title, mem.realname, p.pagename,
(select CONCAT('Items from ', mem.realname,': ',
(select GROUP_CONCAT(Title)
FROM
(Select Title from items where author=
(select author from items
WHERE id = '$item_id' LIMIT 1)
ORDER BY RAND() LIMIT 3) T)
)
) as items_from_author,
(select CONCAT('Items from ',p.pagename,': ',
(select GROUP_CONCAT(Title)
FROM
(Select Title from items where page=
(select page from items
WHERE id = '$item_id' LIMIT 1)
ORDER BY RAND() LIMIT 3) T)
)
) as items_from_page
FROM items AS i
LEFT JOIN members AS mem ON (mem.ID_MEMBER = i.author)
LEFT JOIN pages AS p ON (p.id = i.page)
WHERE i.id LIKE '$item_id'
但提出了一個GROUP_CONCAT收到以下錯誤:
Invalid query: Unknown column 'i.author' in 'where clause'
任何想法?
UPDATE 2
目前使用 「第4級」 查詢由@valex建議。有沒有辦法讓它與2個級別一起工作?
SELECT i.id, i.title, mem.realname, p.pagename,
(select CONCAT('Items from ', mem.realname,': ',
(select GROUP_CONCAT(Title)
FROM
(Select Title from items where author=
(select author from items
WHERE id = '$item_id' LIMIT 1)
ORDER BY RAND() LIMIT 3) T)
)
) as items_from_author,
(select CONCAT('Items from ',p.pagename,': ',
(select GROUP_CONCAT(Title)
FROM
(Select Title from items where page=
(select page from items
WHERE id = '$item_id' LIMIT 1)
ORDER BY RAND() LIMIT 3) T)
)
) as items_from_page
FROM items AS i
LEFT JOIN members AS mem ON (mem.ID_MEMBER = i.author)
LEFT JOIN pages AS p ON (p.id = i.page)
WHERE i.id LIKE '$item_id'
看起來像這樣可以優化某種方式。有任何想法嗎?
看起來很有希望。我確實收到錯誤消息:無效查詢:'where子句'中的未知列'i.author' – James
@James Query已更新。 – valex
這工作....但增加了第三級最優化的解決方案?似乎有點太多了。 – James