2013-06-05 82 views
0

我已經閱讀這幾個職位,但不能似乎能夠解決我的問題。MySQL的集團通過和不玩很好訂單一起

我調用兩個數據庫查詢來填充,通過彼此的側沿側運行兩個數組的,但他們不匹配,因爲爲了使他們出來是不同的。我相信我有事情做與GROUP BY,這可能需要一個子查詢,但再次有點失落......

查詢1:

SELECT count(bids_bid.total_bid), bidtime_bid, users_usr.company_usr, users_usr.id_usr 
FROM bids_bid 
INNER JOIN users_usr 
ON bids_bid.user_bid = users_usr.id_usr 
WHERE auction_bid = 36 
GROUP BY user_bid 
ORDER BY bidtime_bid ASC 

查詢2:

SELECT auction_bid, user_bid, bidtime_bid, bids_bid.total_bid 
FROM bids_bid 
WHERE auction_bid = 36 
ORDER BY bidtime_bid ASC 

即使'排序依據'是相同的結果不匹配。用戶以不同的順序出現。

我希望這是有道理的,並在此先感謝。

*更新* 我只是想增加一點清晰我想要的輸出是什麼。我只需要顯示一個用戶的結果(user_bid),第二個查詢顯示所有用戶的行。我只需要第一個顯示爲每個用戶輸入的第一行。所以,如果我可以在組之前和分鐘日期順序排列,這將是王牌......

+0

由太添加bidtime_bid,users_usr.company_usr,users_usr.id_usr成組。 – ankurtr

回答

0

所以我很複雜,我沒有必要的問題。我找到的解決方案之前。

SELECT users_usr.company_usr, 
    users_usr.id_usr, 
    bids_bid.bidtime_bid, min(bidtime_bid) as minbid FROM bids_bid INNER JOIN users_usr ON bids_bid.user_bid = users_usr.id_usr 
WHERE auction_bid = 36 
GROUP BY id_usr 
ORDER BY minbid ASC 

感謝大家讓我看看(試行)更難......

3

這是可以預期的。您正在提取不參與分組的字段,而不是聚合函數的一部分。 MySQL允許這樣的事情,但通常未分組/未聚合的函數的結果可能是不可靠的。

因爲MySQL是自由選擇的可能的多個「免費」的行這對於實際結果行選擇,你會得到不同的結果。一般來說,它會挑選首次遇到的「自由選擇」結果,但這沒有定義/保證。

+0

要解釋另一種方式,將「查詢」分組爲「叢集」,因此必須知道要使用哪些字段或字段進行摺疊,這是GROUP BY的用途。 – rncrtr

+0

謝謝馬克,我如何命令第一個查詢匹配第二個? – jimbo

+0

強制使用相同的規格進行排序。如果用戶名是相關的,則將其添加到sort-by子句中。 –

0

當你想在結果獨特的效果根據一些 組ID(列名)你所使用的分組。通常將分組與集合函數一起使用,例如 (最小,最大,計數,總和..)。

排序或內部查詢與結果集無關,我建議閱讀一些關於將Sql作爲基於集合的語言進行分組和思考的指南 教程,並且大多數集合理論適用於sql,那麼您將會很好。