2013-01-07 89 views
1

我有兩個表,我已經離開加入如下所示,以顯示墊按ID添加降序順序工作正常。需要指導與MySQL查詢結果

SELECT p.* FROM ruj_users_pad 
AS p LEFT JOIN ruj_users 
AS u ON p.user_id = u.id 
WHERE u.status !=0 
AND 1 
AND p.status = 1 
GROUP BY p.added_date 
DESC LIMIT 0, 20 

不過,現在我想找回第三個表也爲「ADDED_DATE」列與前面的查詢結合起來,以顯示新的降序排列。第三張表格中的數據是用戶點擊收藏墊上當前項目時從按鈕生成的。

這是我有,但它不工作。

SELECT p.*,f.added_date FROM ruj_users_pad 
AS p LEFT JOIN ruj_users 
AS u ON b.user_id=u.id 
LEFT JOIN ruj_users_fave 
AS f ON f.brag_id = u.id 
WHERE u.status !=0 
AND 1 
AND p.status = 1 
GROUP BY f.added_date DESC, b.added_date DESC 
LIMIT 0, 20 

結果返回與第一個結果相同。我不明白什麼是錯的。我希望結果能夠考慮到ruj_users_fave中有一個條目,並將其與第一個結果結合起來,以便將最常用的鍵盤放在頂部。

非常感謝幫助。

+1

你爲什麼不使用'ORDER BY',並且,無關你的問題,你有什麼寫作意圖'和1' –

+0

@ s.bandara因爲我雖然使用'集團BY'將結合兩列added_date將結果組合在一起。我只是嘗試'ORDER BY',但我收到了同樣的結果。 –

+0

@ s.bandara謝謝,但那只是返回fave表中被收藏的項目。我正在尋找所有的墊子,查詢應該在收藏的表格中查看是否有任何墊子已經被收藏,如果是的話,使用收藏品的日期來「訂購」。因此,如果剛剛添加了一個打擊墊,但是有人在兩天前剛剛添加打擊墊的時候就偏愛了吹牛,那麼該打擊墊應該在結果中首先出現,因爲它應該使用日期來顯示在列表中。請讓我知道你是否需要更多的澄清。 –

回答

1

下面是使用UNION合併兩個子查詢的問題的解決方案。這不是三張表的完整查詢,而是兩張表的本質來展示這個概念。我使用表格pad和表格likes。第一個子查詢使用MAXGROUP BY id一起選擇墊的id及其最近的「like」。請注意,我將列MAX(liked)重命名爲timestamp

SELECT pad.id, MAX(liked) AS timestamp FROM 
pad INNER JOIN likes WHERE likes.pad_id = pad.id 
GROUP BY pad.id 

另一子查詢選擇墊id s表示尚未喜歡,即,沒有記錄在喜歡錶中存在該特定墊id。在這種情況下,你提到墊的創建日期應該用於確定返回記錄的順序。因此,我們將added重命名爲timestamp

SELECT id, added AS timestamp FROM pad 
WHERE NOT EXISTS 
    (SELECT liked FROM likes WHERE likes.pad_id = pad.id) 

我們有兩個子查詢現在返回墊的idtimestamp,所以我們可以將它們結合使用UNION一個結果集,然後ORDERBY timestamp。爲你組合的查詢看起來像這樣。

SELECT combined.id, combined.timestamp FROM 
(
    SELECT pad.id, MAX(liked) AS timestamp FROM 
    pad INNER JOIN likes WHERE likes.pad_id = pad.id 
    GROUP BY pad.id 
    UNION 
    SELECT id, added AS timestamp FROM pad 
    WHERE NOT EXISTS 
     (SELECT liked FROM likes WHERE likes.pad_id = pad.id) 
) 
combined ORDER BY combined.timestamp DESC; 
+0

感謝您的回覆!過去兩天我一直在爲此摔跤,我無法做到我想做的事情,所以我再次聯繫你。這是我的新問題,因爲你的幫助。我使用了您提供的代碼,但它不會混合喜歡加入日期的喜歡。它所做的是在非喜歡的結尾添加喜歡。我該如何解決這個問題?非常感謝您的幫助。 –

+0

我剛剛編輯了合併查詢,將它包裝在一個外部查詢中,該查詢將正確地爲您的結果排序。希望這可以幫助。 –

+0

謝謝你的幫助!有用!! –