-1

我有一个表,其中 id、product_type、product_id、quantity 列都是整数。我需要根据 product_type 从另一个表中选择数据。例如。如果 product_type 为 0,则从 tableA 中选择,如果 product_type 为 1,则从 tableB 中选择等。我试图找到如何创建选择但未成功的解决方案。有人能帮助我吗。我感谢每一个帮助。谢谢你。

4

2 回答 2

3

将主表与各个产品表连接起来,但使用左连接并product_type = x在连接条件中包含过滤器,以便实际连接所需的记录。

这将产生许多NULL值;用于coalesce获取输出的非NULL值:

SELECT sales.id,
       sales.quantity,
       sales.product_type,
       coalesce(tableA.name, tableB.name) AS name,
       coalesce(tableA.color, tableB.color) AS color,
       tableA.numberOfAs                -- is NULL for other product types
FROM sales
  LEFT JOIN tableA ON sales.product_type = 0 AND
                      sales.product_id = tableA.product_id
  LEFT JOIN tableB ON sales.product_type = 1 AND
                      sales.product_id = tableB.product_id
WHERE ...
于 2013-02-20T19:11:52.867 回答
0

听起来你需要一个 CASE 声明

SELECT 
   CASE 
      WHEN product_type = 1 THEN (SELECT column FROM table1 WHERE ...)
      WHEN product_type = 2 THEN (SELECT column FROM table2 WHERE ...)
   END 
FROM table

使用 JOINS 可能会提高效率,但这取决于您的架构。

于 2013-02-20T16:47:53.943 回答