SQLite基于列值从多个表中选择

SQLite基于列值从多个表中选择,sql,sqlite,Sql,Sqlite,我有一个表,列id、产品类型、产品id、数量都是整数。 我需要根据产品类型从其他表中选择数据。例如如果产品类型为0,则从表A中选择,如果产品类型为1,则从表B中选择。我试图找到如何创建选择的解决方案,但未成功。谁能帮帮我吗。我感谢你的帮助。谢谢。听起来你需要一份案例陈述 SELECT CASE WHEN product_type = 1 THEN (SELECT column FROM table1 WHERE ...) WHEN product_type =

我有一个表,列id、产品类型、产品id、数量都是整数。
我需要根据产品类型从其他表中选择数据。例如如果产品类型为0,则从表A中选择,如果产品类型为1,则从表B中选择。我试图找到如何创建选择的解决方案,但未成功。谁能帮帮我吗。我感谢你的帮助。谢谢。

听起来你需要一份案例陈述

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

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

将主表与各个产品表联接,但使用左联接,并在联接条件中包括
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 ...

请编辑您的帖子,将您的一次尝试包含在解决方案中。谢谢。更多信息。请显示表结构并列出您希望在结果集中看到的列。通常,当您需要执行动态选择源表的查询时,这表明数据库设计存在缺陷。显示您的完整数据库设计,也许我们可以提供帮助。这个问题不清楚,如果您需要回答,您需要提供更多信息。我认为OP希望从
表A
表B
中选择多个字段,具体取决于
表中的产品类型,不仅仅是一个字段,还有不止一个CASE语句。我很想把它变成一个视图,然后我可以在上面做简单的选择…