2017-06-26 10 views
0

各ユーザーの各値が異なる行に格納されているWordPressデータベースを照会しようとしています。 FIELD_ID = 2は、ユーザー名を意味しますので、フィールド名、そのFIELD_IDするのではなく、見ることができ、ここでそれぞれの結果を個別に照会するMySQLステートメント

ID USER_ID FIELD_ID VALUE 
1  1  2  my name is paul smith 
2  1  3  i bought books 
3  1  4  online 
4  2  2  my name is big boy 
5  2  3  i bought pens 
6  2  4  offline 

例えば

は、FIELD_ID = 3は、彼らが買った、とFIELD_ID = 4は、彼らが何を意味するのか意味しますオン/オフライン。

私がする必要があるのは、オンラインで今ペンを買ったユーザーのリストを返すSQLステートメントを作成することです。

ので、私は

はそのFIELD_ID = 4、値= 'オンライン'

string online= "(select * from table where FIELD_ID='4' AND VALUE='online')"; 

がFIELD_ID 3 'ペン'

string pens="(select * from table where FIELD_ID='3' AND VALUE LIKE '%pens%'"; 

が含まれているすべてのユーザーを選択し、すべてのユーザーを選択し、これをやってみましたそれでこのようにまとめる。

string query=pens + " WHERE " + online; 

"online"と "pens" SQL文を単独で実行すると機能しますが、結合された "query"は何も返しません。

「オンライン」のクエリ結果には現在オンラインのUSER_IDのユーザーが含まれていますが、2番目のクエリはそれから各USER_IDのクエリを実行して値を返さなければならないと思います。

何らかの理由で、「オンライン」クエリからUSER_IDフィールドを選択し、それらのUSER_IDのそれぞれを個別にクエリし、結合した結果を返すことを知る必要があります。

私は単なる一文ですべてのことを行い、今ペンを買ったオンラインのユーザーを返すだけの1つのSQLステートメントを作る方法を知りませんでした。あなたは正しい軌道に乗っている

答えて

0
を使用します

テーブルにUSER_IDが含まれていると述べました。そうであれば、2つのクエリを結合する方法は次のようになります。

SELECT * FROM table WHERE FIELD_ID='4' AND VALUE='online' AND USER_ID IN (SELECT USER_ID FROM table WHERE FIELD_ID='3' AND VALUE LIKE '%pens%'); 
+0

ありがとう、私はそれらを試してみましょう! –

+0

あまりにも多くのCaitLAN、そのフリーキングを働きました!!!!!ありがとう、ありがとう、ありがとう、ありがとう、ありがとう、ありがとう、ありがとう、ありがとう –

+0

私はスタックオーバーフローでユーザーがいなければ何をするのか分からない、私はそうねじっている! –

0

、あなたは自分のサブクエリは、ユーザーのIDを返すようにして、INステートメントを使用する必要があり、例の擬似コード:

... WHERE id IN ([subquery]) 
0

は参加

Select * 
From (
    Select * 
    FROM Table 
    WHERE FIELD_ID='4' AND VALUE='online' 
) t 
WHERE t.FIELD_ID='3' AND t.VALUE LIKE '%pens%' 
+0

これはジョインではありませんが、OPがしたいと思うように動作します。 –

+0

いや、なぜ私が参加したのか分からない...長い朝だった。 –

関連する問題