php - MySql Select语句问题

标签 php mysql select

我不确定我在这里尝试实现的目标是什么,这就是为什么我会尝试用图片来解释。

enter image description here

下面是我得到的查询:

SELECT DISTINCT
unspsc_commodity.`name` AS Commodity,
unspsc_code.`code` AS `Code`,
attributes.`value`
FROM
products
INNER JOIN unspsc_code ON products.unspsc_code_id =     unspsc_code.unspsc_code_id
INNER JOIN unspsc_commodity ON unspsc_code.unspsc_commodity_id =   unspsc_commodity.unspsc_commodity_id
INNER JOIN attributes ON products.product_id = attributes.product_id
WHERE attributes.`name` = 'Product Type'

以上查询仅选择 unspsc_commodity、unspsc_code 和 value,其中 attribute.name 具有“Product Type”。我想为没有产品类型的产品选择 unspsc_commodity、unspsc_code。因此,在属性表中没有产品类型的情况下,查询只需要选择代码和商品,并只输出 null 值。有没有可能实现。

最佳答案

将您的查询更改为具有如下所示的 LEFT JOIN,并使用 CASE 表达式移动 select 子句中的 WHERE 条件

SELECT DISTINCT
unspsc_commodity.`name` AS Commodity,
unspsc_code.`code` AS `Code`,
CASE WHEN IFNULL(attributes.`name`,'') = 'Product Type' THEN attributes.`value` ELSE NULL END AS Value
FROM
products
INNER JOIN unspsc_code 
ON products.unspsc_code_id = unspsc_code.unspsc_code_id
INNER JOIN unspsc_commodity 
ON unspsc_code.unspsc_commodity_id = unspsc_commodity.unspsc_commodity_id
LEFT JOIN attributes 
ON products.product_id = attributes.product_id;

关于php - MySql Select语句问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32630694/

相关文章:

SQL 查询开始日期和结束日期的混淆

mysql - AWS RDS MySql - 如何在设置 'Publicly available' 后允许访问

android - Json MySql 获取两个整数和一个字符串

javascript - jQuery val() 无法在 Aloha Editor 的动态 <select> 上正常工作

php - 带进度条的文件 uploader ?

mysql - 灵活的 MySQL 数据库架构来存储日志

java - Vaadin 设置表格的选定行

javascript - 如何使用 jquery 通过 ajax 单击指向 php 脚本的链接?

php - 如何在cakephp的组件中运行查询?

php - 固定 : PHP Session Store Error Using Memcached