mysql - SQL-使用条件从表(LEFT JOIN)中获取计数

标签 mysql sql

你好,我有以下树表,我想实现名为“想要的结果”的表。 第一个是房屋名称,第二个是每个房屋的房间名称,第三个是每个房间的价格。 我想按房子数房间数。

表_1

nid    name
1      House 1
2      House 2 
3      House 3       

表_2

Name     house_ref_id    id
Room1    1               20
Room1    2               21
Room1    2               22
Room1    3               23
Room1    3               24

表_3

Price    room_ref_id
0        20
100      21
150      22
0        23
120      24

想要的结果:

nid      name       Rooms w/ price
1        House1     0
2        House2     2
3        House3     1

我已经尝试了以下代码,但可以按价格获得合适数量的房间

SELECT Name, COUNT(price) AS "rooms w/ price" FROM table_1
LEFT JOIN table_2 ON table_1.id = table_2.ref_id
LEFT JOIN table_3 ON table_2.room_ref_id = table_3.id 
WHERE table_3.price>0
GROUP BY table_1.nid

但得到了以下内容:

nid     name      rooms w/ price
1       nouse1    1
2       house2    2
3       house3    2

最佳答案

关闭。 WHERE 中的条件将外连接转换为内连接。您需要将其移至 ON 子句:

SELECT Name, COUNT(table3.id) AS "rooms w/ price"
FROM table_1 LEFT JOIN
     table_2 
     ON table_1.id = table_2.ref_id LEFT JOIN
     table_3
     ON table_2.room_ref_id = table_3.id AND table_3.price > 0
GROUP BY table_1.nid;

关于mysql - SQL-使用条件从表(LEFT JOIN)中获取计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45614305/

相关文章:

php - 以正确的方式增加一个值

php - 如何 "SUM"唯一列值并按日期过滤

mysql - 通过 LEAD/LAG 或递归 CTE 更新?

javascript - HTML5 应用数据库同步

mysql - 如何连接外键中的信息?

php - MySQL ("Sending Data"查询非常慢)

php 和 html 注册页面结果是空白页

c# - 无法将 MySQL 日期/时间值转换为 System.DateTime

sql - Knex 查询返回 bool 逻辑

java - 复合键的复合键