SQLite基于列值从多个表中选择
我有一个表,列id、产品类型、产品id、数量都是整数。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 =
我需要根据产品类型从其他表中选择数据。例如如果产品类型为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语句。我很想把它变成一个视图,然后我可以在上面做简单的选择…