我試圖在PHP中創建一個系統,我可以根據他們的命令和這些答案的要求發送自動答案。例如,如果客戶訂購了20,30和40的product_id。我希望能夠爲其中一個答案設置要求,做一個檢查,如果它匹配,然後發出相應的答案。如何在多對一的情況下根據多個ID從列中選擇唯一值?
當前有兩個表,一個用於消息本身,另一個用於鏈接到這些消息的需求。
tickets_answers
id name message
1 Test 1 This is the first test message.
2 Test 2 Another test message
tickets_answers_options
id answer_id option_type option_id
1 1 product_id 20
2 1 product_id 30
3 1 product_id 40
4 2 product_id 25
5 2 product_id 30
所有可用的答案循環,看看他們是否匹配是不優選的,因爲我不知道有多少答案/需求將在未來成立。這就是爲什麼我試圖根據第二個表中顯示的已知產品ID作爲option_ids檢索相應答案的原因。
該查詢將以PHP構建。我很可能會做一個內爆或基於訂單本身的信息構建查詢。現在我只是試着理清SQL部分。
我曾嘗試下面的查詢檢索answer_id
SELECT answer_id
FROM tickets_answers_options
WHERE option_id IN (SELECT option_id
FROM tickets_answers_options
WHERE option_type = 'product_id'
AND option_id = 20
OR option_id = 30
OR option_id = 40)
GROUP BY answer_id
這導致一些接近我想要的東西。該查詢返回answer_ids
1
2
在這種情況下,2彈出,因爲它與在子查詢中提到的option_id之一匹配。
我希望的結果是得到一個與option_ids匹配的answer_id。 我看到這可能是我爲這個特定系統建立結構的一個倒退。但將來會有多個option_types進行檢查。現在我試圖只檢查product_id,在PHP中我可以爲不同的option_types設置多個查詢,所以確保一切都匹配。
我希望我在這裏發佈足夠的相關信息,如果沒有請讓我知道,所以我可以提供更多。並感謝您提前查看此事。
我的結構不是優雅的開始!它完美地返回了一個answer_id!幸運的是,我使用PHP構建查詢,並且可以輕鬆生成這些查詢。我將在明天對此查詢做一些進一步的測試,看看它是否適用於其他一些情況。感謝您的時間。 – Rimble
@Rimble - 請參閱編輯在幾秒鐘內更好的選項 – Galz
看起來很完美。排序產品ID不應該成爲問題。再次感謝! – Rimble