我想做的事情:
我想从订单表中获取产品的名称及其 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/