2017-10-04 9 views
1

いくつかの行をグループ化するためにいくつかの助けが必要です。私は一日中努力していて解決策が見つからないと思います。 、私はシド11、16値33を持っている場合、私は結果だけ入札= 25が欲しい150をMySQLの結果2つの値でグループ化する

> id | Bid | Cid | value 
>  4 | 22 | 11 | 33 
>  5 | 24 | 11 | 33 
>  6 | 25 | 11 | 33 
>  7 | 24 | 11 | 100 
>  8 | 25 | 16 | 150 

マイ表:たぶん、いくつかのいずれかは私に暗闇の中で光をもたらすことができます

は私が

SELECT id, Bid FROM `table` WHERE Cid IN (11, 16) AND 
value IN('33','150') GROUP BY Bid; 

しかし、これで試してみました場合は、私はすべてのCidのを得る...

私は木の通りです。

+0

はあなたが入札は両方(CID、値)のペアを持っているかどうかを確認したいです(11、33)と(16、150 )? – GurV

+0

はい、まったく一致する必要があります – Korty

+0

こんにちは@ Korty、なぜあなたは出力に単価= 25だけを望んでいますか?あなたがこのクエリで持って来ようとしている関係をいくつか指定することができれば助けになります。そして、groupbyは、同じ値のBidを持つすべての行を出力内の単一の行に統合するため、機能しませんでした。 –

答えて

3

あなたが探しているので、あなたのクエリは注意が必要です指定されたグループ内の列値のペアが存在するかどうかを判定します。ここに行く方法の1つは、BidCid、およびvalueで集計することです。最初は、各レコードに一致するペアがあるという制限があります。次に、Bidで副問合せを行い、カウントが2であることを確認して、両方のペアが存在することを示します。ここ

SELECT Bid 
FROM 
(
    SELECT Bid, Cid, value 
    FROM yourTable 
    WHERE (Cid, value) IN ((11, 33), (16, 150)) 
    GROUP BY Bid, Cid, value 
) t 
GROUP BY Bid 
HAVING COUNT(*) = 2; 

デモ:

Rextester

アップデート:SQL Serverを使用しているので

我々は少しこれに上記のクエリをリファクタリングすることができます

SELECT Bid 
FROM 
(
    SELECT Bid, Cid, value 
    FROM yourTable 
    WHERE (Cid = 11 AND value = 33) OR (Cid = 16 AND value = 150) 
    GROUP BY Bid, Cid, value 
) t 
GROUP BY Bid 
HAVING COUNT(*) = 2; 

そしてここでは、クエリのSQL Serverのバージョンのデモです:

Rextester

+0

あなたの例では動作します!しかし、私が1:1(私はそれを証明しました!)と思っています。私はエラーが発生します:近辺の '、'条件が期待されるコンテキストで非括弧式が指定されました。 – Korty

+0

@ Korty答えはどちらも、それぞれのデモでエラーなく実行されています。私は問題があなたの終わりにあると思う。私のデモが特定のデータに失敗した場合は、Rextesterをフォークして問題を表示してください。 –

+0

本当ですか?これは私たちが今励ましているものですか? :-( – Strawberry

1

あなたには、いくつかのSUMとの組み合わせでGROUP BYを使用するときは、あなたの答えを見つけることができます

SELECT 
Bid 
FROM 
Table1 
GROUP BY 
Bid 
HAVING 
    SUM(Cid = 11) AND SUM(Cid = 16) 
AND 
    SUM(value = 33) AND SUM(value = 150) 

結果

| Bid | 
|-----| 
| 25 | 

デモhttp://www.sqlfiddle.com/#!9/ce56e97/2

+0

これはあなたの例では動作しますが、構文の近くに ')'。私はそれをより多くの時間に証明 - phpMyAdminのスペシャル? – Korty

+0

私は間違いを見つけました。昨日遅すぎました。私はMS SQLではなくMySQLを使用しているので、構文エラーが私の問題です。これについての経験はありますか? http://www.sqlfiddle.com/#!6/fad5c/3 – Korty

関連する問題