mysql - 如何在 select 语句 if 条件中使用 select 语句

标签 mysql subquery

我想做的事情:

我想从订单表中获取产品的名称及其 ID,但就我而言,我已将产品存储在 3 个不同的表中。 即菜肴、饮料、其他。

问题:

所以问题是在订单表中我放置了一个类型(它是什么类型的产品),例如“dirnks,dish,others”。那么当产品可以位于任何表中时,我如何获取产品的名称(菜肴、饮料、其他)

我想要什么:

我不知道这是否可能,但如果有人可以告诉下面的查询是什么,我如何在 IF 语句中使用 select 语句

    SELECT product_id,type,quantity ,
     ( IF(type='Drinks)
       THEN
       (SELECT drink_name FROM drinks WHERE drink_id=product_id) 
       ELSE IF (type='Dish)
       THEN
       (SELECT dish_name FROM dish WHERE dish_id=product_id) 
    )  
      as drink_name
    FROM order_product

   WHERE shop_id='JSMMSK730'

这件事可能吗?

最佳答案

使用UNION,并向子查询添加一个新列,指示行来自哪个表。然后您可以在 JOIN 条件中使用它。

SELECT product_id, o.type, quantity, name FROM 
order_product o JOIN
(
    SELECT "dish" type, dish_id id, drink_name name from dish
    UNION
    SELECT "drinks" type, drink_id id, drink_name name from drinks
    UNION
    SELECT "others" type, other_id id, other_name name from others
) p
ON p.id = o.product_id and p.type = o.type
WHERE shop_id = 'JSMMSK730'

关于mysql - 如何在 select 语句 if 条件中使用 select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17339507/

相关文章:

php - 尝试使用 php 中的类从 mySQL 显示

mysql - SQLite 在 WHERE 中传递多个参数

mysql - JOIN 语句中双嵌套派生表中的未知列

mysql - 如何使用 MySQL 将子查询结果存储在 session 变量中?

mysql - 使用子查询组合 2 个 mysql 查询

mysql - Magento - 如何按最大值选择mysql行?

php - 如何在codeigniter中使用ajax从 View 页面访问外部php脚本?

mysql 连接子查询问题

mysql - WordPress 插件查询中占位符的 PHPStorm 警告

php - WP_Query 按字符串上的 'meta_value_num' 排序