如果条件,如何在select语句中使用select语句

时间:2013-06-27 09:29:17

标签: 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'

这件事有可能吗?

2 个答案:

答案 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'