2017-09-23 22 views
0

だから私は下の表と、これらの値を持っているPHPの一つの変数があります:14,16MySQLのチェック組み合わせ

combo table

数字の上の組み合わせが中に存在する場合はどのように確認することができますが表?上記のコンボはID3に存在します。番号の順序を確認したくありません(例:「16,14」または「14,16」)

私はあなたが混乱しないことを願っています!

+0

ようこそスタックオーバーフロー。あなたはすでにこれをやってみましたか? [良い質問をするにはどうすればいいですか](https://stackoverflow.com/help/how-to-ask)をご覧ください。スタックオーバーフローはコーディングサービスではありません。 ***あなたの問題を研究し、投稿する前に自分でコードを書いてみることをお勧めします***。 *特定の*に固執する場合は、[最小限の、完全で検証可能な例](https://stackoverflow.com/help/mcve)とあなたが試したことの概要を含めてお手伝いしてください。 – FluffyKitten

+0

3と4の両方が14と16だけでなく、3? –

答えて

2

あなただけCOUNTHAVINGGROUP BYが必要になります。

SELECT id 
FROM tablename 
WHERE optid IN(14, 16) 
GROUP BY id 
HAVING COUNT(DISTINCT optid) = 2; 
  • WHERE optid IN(14, 16)そのidはこれらの数字を持っていることを確認します。
  • COUNT DISTINCTは、すべてのIDを削除し、ちょうど2つのものを期待しますoptid

demo

結果:このクエリはあなたに、少なくとも14 and 16を持っているそれらのidを与える:という

| id | 
|----| 
| 3 | 
| 4 | 

注意。だから、それはあなたが正確に14と16とこれ以上のものを持っているものをしたいしかし、場合あなたの両方の3と4

を与えるだろうし、これを試してみてください。

SELECT id 
FROM tablename 
WHERE optid IN(14, 16) 
    AND id not in (SELECT id from tablename where optid not in(14,16)) 
GROUP BY id 
HAVING COUNT(DISTINCT optid) = 2; 

これはあなたを与えるだろう。

| id | 
|----| 
| 3 | 

Demo

+0

非常にありがとう! 2日私はこれを探しています! :) –