繁体   English   中英

SQL查询,一对多,每个匹配的计数

[英]SQL query, one to many, with count number of each match

我正在使用 SQL 中的自定义数据库在 wordpress (php) 上编写自定义查询。

我有两个表:

| table.carMake  |    | table.carmodels                 |
|----------------|    |---------------------------------|
| id | make      |    | ID | makeId| modelname| price   |    
|----|-----------|    |----|-------|----------|---------|
| 1  | toyota    |    | 1  | 1     | A        | low     |
| 2  | mazda     |    | 2  | 3     | B        | med     |
| 3  | tesla     |    | 3  | 3     | C        | high    |
                      | 4  | 2     | D        | med     |
                      | 5  | 2     | E        | med     |
                      | 6  | 2     | F        | low     |

我想做一个查询,将返回这样的数组:

$modelprices = 
[
   make: toyota,
   low: 1,
   medium: 0,
   high: 0,
],
[
   make: mazda,
   low: 1,
   medium: 2,
   high: 0,
],
[
   make: tesla,
   low: 0,
   medium: 1,
   high: 1,
]

我一直在四处寻找,但我的 SQL 知识相当有限。 谢谢!

希望这会对您有所帮助,我已经准备了使用 DB Fiddle 的 SQL 查询。 在这里,我使用 CASE 来计算制造和价格明智的数量。

SELECT CM.make,
SUM(CASE CMS.price WHEN 'LOW' THEN 1 ELSE 0 END) AS LOW,
SUM(CASE CMS.price WHEN 'HIGH' THEN 1 ELSE 0 END) AS HIGH,
SUM(CASE CMS.price WHEN 'MED' THEN 1 ELSE 0 END) AS MED
FROM
carMake AS CM 
INNER JOIN carmodels AS CMS ON CMS.makeId = CM.id
GROUP BY CM.make;

DB Fiddle 链接: https ://dbfiddle.uk/?rdbms = mysql_5.7 & fiddle = dfb7344abd06a6a7130e1f4eef293476。 这包括创建表和查询。

此 sql 查询应返回 3 列:

  1. 取名(例如:toyota)
  2. 价格(例如:低)
  3. 组合的“计数”,如果存在(例如:低价丰田的数量,在这种情况下为 1)
from table.carMake cmk join table.carmodels cmd on (cmk.id = cmd.makeId)
group by cmk.make, cmd.price;

我还没有测试过,所以如果它不起作用,请告诉我,我会纠正它。

祝你好运!:)

请尝试以下操作:

选择“制作:”+ c.make,

cm.price = 'low' 的情况

然后 'low:' + count(cm.price) else 'low:' + '0' 结束,

cm.price = 'medium' 的情况

然后'中等:'+计数(厘米.价格)

否则'中等:'+'0'结束,

cm.price = 'high' 的情况

然后 'high:' + count(cm.price)

否则'高:'+'0'结束

来自 table.carMake c

cm.id = cms.makeid 上的内连接 table.carmodels cms

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM