我要做的是:
我想从订单表中获取带有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'
这件事有可能吗?
答案 0 :(得分:0)
尝试以下语法:
SELECT * FROM
(
SELECT product_id, product_name from dish
UNION
SELECT product_id, product_name from drinks
UNION
SELECT product_id, product_name from others) as product, order
)
WHERE product.product_id = order.order_id
答案 1 :(得分:0)
使用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'