我试图在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