我有兩個頻道。多個查詢,或嵌套?
第一個頻道是'預訂'。這包含member_id
和tour_id
。
第二個頻道是'遊覽'。這包含了上述tour_id
參考的旅行細節。
我需要查詢「旅遊」頻道內的字段,獲取tour_id
以滿足查詢。然後我需要找到所有'預訂'條目,其中tour_id
匹配其中一個查詢爲真。
完成兩個SQL查詢或嵌套查詢會更好嗎?如果嵌套,如何?
exp_channel_data | CHANNEL_ID | entry_id | field_id_1 | ... |
exp_channel_titles | channel_id | entry_id | author_id | ... |
SELECT titles.author_id
FROM exp_channel_data AS tours
LEFT JOIN exp_channel_titles AS titles ON bookings.entry_id = titles.entry_id
LEFT JOIN exp_channel_data AS bookings
ON tours.entry_id = bookings.entry_id
AND bookings.channel_id = '17'
WHERE tours.channel_id = '5'
AND tours.field_id_34 = 'DSV04'
$sql_1 = "
SELECT entry_id
FROM exp_channel_data
WHERE field_id_34 LIKE 'adas%'
";
$query_1 = ee()->db->query($sql_1);
$test = $query_1->result_array();
$uids = Array();
foreach($test as $u) $uids[] = $u['entry_id'];
$list = implode(",",$uids);
$sql_2 = "
SELECT ct.author_id
FROM exp_channel_data AS cd
LEFT JOIN exp_channel_titles AS ct ON cd.entry_id = ct.entry_id
WHERE field_id_227 IN ($list)
";
$query_2 = ee()->db->query($sql_2);
$test_2 = $query_2->result_array();
示例輸入輸出需要徹底理解。 – 1000111
channel = table?聽起來像一個連接到我,但樣本輸入/輸出會讓事情變得清晰...'SELECT b.member_id FROM tours t LEFT JOIN booking b ON t.tour_id = b.tour_id WHERE t.field1 ='abc'AND t.field2 ='def'' – hsan
@hsan謝謝。這兩個通道數據都在同一個表中,所以我不認爲我可以使用JOIN。表中有一個名爲'channel_id'的列,我可以用它來定位每個列。 – ccdavies