以前にこれを行ったことがあることは知っていますが、しばらく SQL をあまり行っていません。
Lead_detail というテーブルがあり、次の列があります: id
, lead_id
, form_id
, .field_number
value
結果を取得してからフィルタリングしようとしています。
そのため、最初は、特定の質問に対して特定の回答があったすべてのリード ID を取得しました。
最初のフィルターが、「鶏肉は好きですか」という質問に対する「はい」の回答 (field_number of 4) のすべての結果が必要だったとします。
$leadIds = query(SELECT lead_id FROM lead_detail WHERE field_number = '4' AND value = 'yes' AND form_id = '1')
$leadIds = implode(', ', $leadIds);
次に、適切なフィルター処理されたデータを取得できました
SELECT * FROM lead_detail WHERE form_id = '1' and lead_id IN ($leadIds)
これは完全に機能します。
ただし、SECOND フィルターを追加する場合は、同じクエリで同じ列に対して 2 つのクエリを実行する必要があります。テーブル エイリアスまたはサブ セレクトと何らかの結合を行う必要があると考えていますが、その方法を思い出せません。
では、「鶏肉は好きですか」という質問に「はい」と答えた人と、「あなたの年齢は?」で「18 ~ 24 歳」と答えた人を知りたい場合、適切な $leadIds を取得するにはどうすればよいでしょうか?
の組み合わせのようなものになります。
SELECT lead_id FROM lead_detail WHERE field_number = '4' AND value = 'yes' AND form_id = '1'
AND
SELECT lead_id FROM lead_detail WHERE field_number = '5' AND value = '18-24' AND form_id = '1'