2017-10-30 6 views
3
id | user_id | prd_id | amnt | dis 
1 | 1  | 10 | 200 | 23 
2 | 2  | 10 | 300 | 11 
3 | 3  | 20 | 100 | 26 
4 | 2  | 20 | 50 | 12 
5 | 4  | 30 | 100 | 22 
6 | 2  | 40 | 600 | 18 
7 | 2  | 30 | 100 | 16 

私はテーブルの上から2の結果たい:、最高額を取得し、カウント

user_id | cont | bid on prd_id | winner on bid prod_id | 
1  | 1 | 10    | -     | - 
2  | 4 | 10,20,30,40  | 10,40    | 
3  | 1 | 20    | 20     | 
4  | 1 | 30    | 30     | 

:以下のように第二by user_id

prd_id | user_id | cont | highestamt | disc 
10  | 2  | 2 | 300  | 11 
20  | 3  | 2 | 100  | 26 
30  | 4  | 2 | 100  | 22 
40  | 2  | 1 | 600  | 18 

以下のように

まずby prod_id更新:ex:上記: user_id = 2は製品10,20,30,40(prd_idへの入札)に入札していますので、入札件数は4回です...うち10,40(入札者prod_id)で勝ちます.WHY ONLY 10,40 30ではなく... bcz user_id = 4は、amt = 100でamd = 100、user_id = 2でprd = 30に入札しました。しかし、最初の入札はprd = 30でuser = 4によって行われたため、prd = 30(同じamtのため)

私はby prd_idのための以下のクエリを試してみましたが、それは私に間違った結果を与えます。以下のようにクエリ結果上記

SELECT `prd_id`, `user_id` , count('prd_id') as cont , max(`amnt`) as highestamt,disc 
FROM `proddtails` 
group by `prd_id` order by `prd_id` 

:二by user_idについては

prd_id | user_id | cont | highestamt | disc 
10  | 2  | 2 | 300  | 11 
20  | 2  | 2 | 100  | 11 
30  | 2  | 1 | 100  | 11 
40  | 2  | 1 | 600  | 11 

は、私は、クエリがどうなるか得ていないのです(user_id,discは、適切来ていません)。

おかげ

UPDATE:HARSHIL FOR

THANKS:user_idをためが、prd_idに適しています:秒http://www.sqlfiddle.com/#!9/e04063/1

が、いくつかのより多くのエントリの後に私はこのバグを見つけたhttp://www.sqlfiddle.com/#!9/5325a6/5/1 (最初のクエリ)

user_id cont bid_on_prd_id winner_on_bid_prod_id 
1   1   10     (null) 
2   4  10,20,40,30   10,40,30 
3   1  20      20 
4   1  30      30 

が、私は以下のようにしたい:

ヌルなしではヌルで

user_id cont bid_on_prd_id winner_on_bid_prod_id 
2   4  10,20,30,40    10,40 
3   1  20      20 
4   1  30      30 

をUSER_ID =をUSER_ID(私のWAMPサーバに私はuser_idのためwinner_on_bid_prd_idにヌルが表示されません1、私はnullの代わりに値10を得る)

user_id cont bid_on_prd_id winner_on_bid_prod_id 
1   1   10     (null) 
2   4  10,20,30,40    10,40 
3   1  20      20 
4   1  30      30 
+0

私はprd_id、user_idは、ディスクによってグループをすれば 'GROUP BY' –

+0

に' user_id'と 'disc'を追加します。..それでは、prd_idでグループ化せずに出力します。inshort contはすべて1であり、すべての値をリストします – user3209031

+0

グループからコンマ区切りリストを取得するには、 'GROUP_CONCAT'を使用します。 – Barmar

答えて

4

Fo Rのprd_id:usr_idについては

select t1.prd_id,t1.user_id, 
(select count(*) from tablename where prd_id = t1.prd_id)as cont, 
t1.amnt as highststatment, 
t1.dis as disc 
from tablename t1 
where (t1.prd_id,t1.amnt) in 
(select prd_id, max(amnt) from tablename group by prd_id) 
group by t1.prd_id; 

select t1.user_id, 
     count(*) as cont, 
     Group_concat(t1.prd_id separator ',') as bid_on_prd_id, 
     (select Group_concat(distinct t2.prd_id separator ',') 
     from tablename t2 
     where t2.user_id = t1.user_id 
     and (t2.id) in 
        (select min(id) from tablename 
         where (prd_id,amnt) in 
           (select prd_id,max(amnt) from tablename group by prd_id) 
         group by prd_id 
        ) 
     ) as winner_on_bid_prod_id 
from tablename t1 
group by t1.user_id 
having winner_on_bid_prod_id IS NOT NULL; 

Click here for UPDATED DEMO

+0

を参照してください。prd_id(複数のデータがテストされますが、今は必要な結果が表示されます)....とuser_idの秒です。あなたもそれを助けてくれますか – user3209031

+0

。それだけで働いています。 –

+0

user_idのクエリを試してください。 –

関連する問題