0

我正在尝试做的事情:

我想从 orders 表中获取带有 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'

这件事可能吗?

4

2 回答 2

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'
于 2013-06-27T09:43:17.853 回答
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
于 2013-06-27T09:33:13.793 回答