-1

私はテーブルを持っています:

詳細

--------------------------------------------------------
ID    |   PARENT_ID    |    DATA_KEY     |   DATA_VALUE
======================================================== 
1     |      1         |     Guitar      |      4
--------------------------------------------------------
2     |      1         |     Radio       |      2
--------------------------------------------------------
3     |      1         |     Tv          |      2
--------------------------------------------------------
4     |      1         |     Drum Kit    |      3
--------------------------------------------------------
5     |      2         |     Guitar      |      4
--------------------------------------------------------
6     |      2         |     Radio       |      2
--------------------------------------------------------
7     |      2         |     Tv          |      2
--------------------------------------------------------
8     |      2         |     Drum Kit    |      3
--------------------------------------------------------
9     |      3         |     Guitar      |      1
--------------------------------------------------------
10    |      3         |     Radio       |      2
--------------------------------------------------------
11    |      3         |     Tv          |      2
--------------------------------------------------------
12    |      3         |     Drum Kit    |      3
--------------------------------------------------------

以下の条件を満たすmysqlで個別のPARENT_IDを選択するにはどうすればよいですか?

    1. DATA_KEY='ギター'およびDATA_VALUE='4'
    1. DATA_KEY='ラジオ'およびDATA_VALUE='2'

クエリの期待される出力は次のようになります

-------------
PARENT_ID
=============
  1
-------------
  2
-------------

PARENT_ID1と2だけが'Guitar'='4'と'Radio'='2'を持っているので

4

3 に答える 3

5
SELECT DISTINCT a.parent_id 
FROM details AS a
JOIN details AS b ON a.parent_id=b.parent_id
WHERE a.data_key='Guitar' AND a.data_value='4' AND
      b.data_key='Radio' AND b.data_value='2';
于 2013-03-04T18:07:00.550 に答える
0

多分あなたはこれを探します

   SELECT  a.parent_id 
  FROM details AS a
  JOIN details AS b ON a.parent_id=b.parent_id
  WHERE a.data_key='Guitar' AND a.data_value='4' AND
     b.data_key='Radio' AND b.data_value='2'
  group by a.parent_id ;

ここでデモ

于 2013-03-04T18:23:30.903 に答える
0
SELECT DISTINCT Parent_Id
FROM details
WHERE (data_key='Guitar' AND data_value='4') OR
(data_key='Radio' AND data_value='2')

これにより、要求した結果が得られます。

あなたが試したとコメントしたことは近いものでしたが、「OR」ではなく「AND」を使用していました。

于 2013-03-04T18:11:15.707 に答える