【发布时间】:2016-02-03 03:11:39
【问题描述】:
我想要一个每次使用每种颜色时都会计数的查询。
tbl_places 是保存来自多个枚举表的数据的主表。 tbl_places 保存不同建筑物中特定楼层颜色的相应 INT 值。 `
tbl_paintcolor 是一个枚举表,有 2 列:值和颜色。
我不知道如何将 ON 子句与我想在 tbl_places 中计数的特定列关联起来。
SELECT
`tbl_paintcolor`.`Color` AS Paint_Color,
count(`tbl_places`.`blg1floor1_color`) AS Blg1Floor1,
count(`tbl_places`.`blg1floor2_color`) AS Blg1Floor2,
count(`tbl_places`.`blg1floor3_color`) AS Blg1Floor3
FROM `tbl_places`
INNER JOIN `tbl_paintcolor` ON (`tbl_places`.`blg1floor1_color`=`tbl_paintcolor`.`Value` OR `tbl_places`.`blg1floor2_color`=`tbl_paintcolor`.`Value`)
GROUP BY `tbl_paintcolor`.`Color`
此查询最终或多或少地计算同一列。
如何将 ON 子句中的条件表达式与我想在 SELECT 子句中计算的列关联起来?
我希望查询为每个特定楼层输出一列,并且每一行计算找到该颜色的次数。此查询的输出将是结构化的:
╔════════╦════════════╦════════════╦════════════╗
║ Color ║ Blg1Floor1 ║ Blg1Floor2 ║ Blg1Floor3 ║ etc...
╠════════╬════════════╬════════════╬════════════╣
║ red ║ 23 ║ 23 ║ 23 ║
║ orange ║ 23 ║ 23 ║ 23 ║
║ yellow ║ 23 ║ 23 ║ 23 ║
╚════════╩════════════╩════════════╩════════════╝
等
感谢您抽出宝贵时间,如果不清楚,我们深表歉意,我是 SQL 新手。
【问题讨论】:
-
您的查询并没有让我觉得是错误的。你目前的输出是多少?
-
它为每一列输出相同的计数。我认为我的问题出在 OR 语句中。我正在寻找一种将 ON 子句链接到我的 SELECT 子句的更好方法
-
如果您向我们展示一个包含数据和查询给出的输出的可重现示例,这可能会有所帮助。
标签: mysql join conditional