2011-12-20 6 views
1

次のクエリを使用して2つのテーブルから値を結合して取得しています。値を降順で表示します。SQL:グループを使用するときに降順で値を取得できません

私が表示したい
Leads 
63697  Ben 
63698  Ben 
63699  Ben 
63700  Ben 
63701  Ben 


log 

2 63697  Ben   10%  Qualifying 
3 63697  Ben   20%  Qualifying 
4 63697  Ben   30%  Qualifying 
6 63698  Ben   30%  Qualifying 
8 63698  Ben  80%  Quoted 
10 63698  Ben   70%  Quoted 

63697  Ben   30%  Qualifying 
63698  Ben   70%  Quoted 
63699  Ben 
63700  Ben 
63701  Ben 

問題は、私は、クエリを使用する場合、

SELECT leads.id,leads.name, log.prob, log.current_stage FROM leads LEFT JOIN log ON log.leadid = leads.id WHERE leads.name = '$name' ORDER BY log.id DESC 

はそれが降順に、ログテーブルのすべての詳細が表示されていることです。しかし、私は

SELECT leads.id,leads.name, log.prob, log.current_stage FROM leads LEFT JOIN log ON log.leadid = leads.id WHERE leads.name = '$name' GROUP BY log.leadid ORDER BY log.id DESC 

それは、ログテーブルから昇順で値を掴む、グループ化しようとすると、

63697  Ben   10%  Qualifying 
63698  Ben   30%  Qualifying 
63699  Ben 
63700  Ben 
63701  Ben 

誰かが私がここで間違ってやっているものを私に伝えることができますか?

答えて

2
SELECT * FROM (
SELECT leads.id,leads.name, log.prob, log.current_stage, log.id AS logid FROM leads LEFT JOIN log ON log.leadid = leads.id WHERE leads.name = '$name' GROUP BY log.leadid 
) ORDER BY logid DESC 

これは非常に頻繁に表示されているように、示されているようにスーパークエリーで囲みます。

+0

ありがとうございました....しかし、私は、サブクエリの内部でラップと順序の外でグループを移動しなければならなかった... – LiveEn

0

あなたが選択したフィールドではないlog.idで注文しています。 SELECTディレクティブの後にORDER BYが評価されるので、これを行うことはできません。

ORDER BY log.idをORDER BY leads.idに変更します。これは、SELECTディレクティブに表示される唯一の識別子です。

関連する問題