2013-06-27 22 views
0

我所试图做的事:如何选择staments内使用select stament如果条件

我想要得到的产品的名字与它的从订单表ID,但在我的情况我已存储产品在3个不同的表格中。 即盘,饮料,其他。

问题:

所以问题是订单表我已经把一个类型(这是什么样的产品),如“dirnks,菜,其他人”。所以我怎样才能得到的名称产品时,产品可在任何表(菜,饮料等)

我想要什么:

我不知道是否有可能或没有,但如果有人能告诉下面的查询还有什么,怎么我可以使用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

使用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' 
+0

首先,非常感谢你,它几乎工程,但我在这里纸张类型和即得到一个小问题= o.type这里mysql的说#1267 - 归类错误的非法搭配,如何我在你的查询中将“dish”制作为latin1_swedish_ci – sandeepKumar

+0

请参阅http://dev.mysql.com/doc/refman/5.5/en/charset-literal.html – Barmar

+0

非常感谢你,你是一位真诚的 – sandeepKumar

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