我有以下两个表:
+----+-------+-------+------+
| id | model | color | quant|
+----+-------+-------+------+
| 1 | 111AA | red | |
| 2 | 222BB | blue | 8 |
| 4 | 444DD | green | |
+----+-------+-------+------+
我需要一个查询,它将从表1中获取颜色列不为空的所有行以及表2中与特定模型匹配的列数量的总和(在给出的示例中,model =&#39 ; 222BB')生成下表:
SELECT t1.id, t1.model, t1.color, SUM(t2.quant)
FROM table1 t1 LEFT OUTER JOIN table2 t2
ON t1.id = t2.id
WHERE t1.color != '' AND t2.model = '222BB'
这是我到目前为止所尝试的:
{% set f = lambda... %}
但是,这没有用。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:1)
要接收预期的表,请运行以下SQL查询:
SELECT t1.id, t1.model, t1.color, IF(t2.model = '222BB', SUM(t2.quant), NULL)
FROM table1 t1
LEFT JOIN table2 t2 ON t1.model = t2.model
WHERE t1.color != ''
GROUP BY t1.model
结果与您的表格相同。但我认为最好更新设计以在ID列上进行连接,而不是模型名称。
答案 1 :(得分:0)
在Sql中,你不应该写!=或== with null。强烈建议您使用 IS NULL 和 IS NOT NULL 子句。
http://www.tutorialspoint.com/sql/sql-null-values.htm
**选择a.model,b.total from(从table1选择模型,其中color不为null)a,(选择模型,从table2逐模型得到sum(quant)total)b其中a.model = b。模型; **
答案 2 :(得分:0)
试试这个,
select t1.id, t1.model,t1.color,sum(t2.quant)
from table1 t1
left outer join table2 t2 on (t1.model = t2.model and t1.color <> ‘’)
group by t1.model