作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有 3 个表。产品、选项和 Prod_Opts_relations。后者包含 product_id 和 option_id,因此我应该能够找出为任何给定产品选择了哪些选项。
现在我想从选项表中检索所有选项,其中额外别名字段的值应保持选中或未选中,具体取决于给定产品 ID 的关系表中是否存在数学记录。
到目前为止,我想到了这个:
SELECT
IF(IN(SELECT id_option FROM prod_opt_relations WHERE id_product='18'),'y','n') AS booh
,optionstable.id AS parent_id
,optionstable.name_en AS parent_english
,optionstable.name_es AS parent_spanish
FROM product_options AS optionstable
WHERE 1
导致语法错误。
唉,我就是想不通哪里出了问题
最佳答案
在您的两个表之间使用左连接
,无论是否匹配,都可以从选项表中检索所有数据。然后测试从右表返回的值是否为 null 以设置您的 y/n 标志。
SELECT
IF(por.id_product IS NULL, 'n', 'y') AS booh
,optionstable.id AS parent_id
,optionstable.name_en AS parent_english
,optionstable.name_es AS parent_spanish
FROM
product_options AS optionstable
LEFT JOIN prod_opt_relations as por ON (
por.id_product=18 AND por.id_option=optionstable.id_option
)
WHERE 1
关于mysql - SELECT(IF(IN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2469075/
我是一名优秀的程序员,十分优秀!