1

我有两个表符号和 rpm。

表详细信息: rpm:rpm 中的条目也导出符号和消耗。

符号: 符号表是所有符号(导出和消费)的集合。

表说明:

符号: 符号表有 id、名称、rpm_id(映射到 rpm 表的 id)、标志以显示它是导出还是消耗。标志 = 1; 消费标志 = 0; 出口

rpm: rpm 表有 id、name。

更多上下文: rpm 条目导出的符号被其他 rpm 表条目多次使用。因此,一个符号以不同的 id rpm_id 多次在符号表中登记。

问题陈述: 按给定的 rpm 列出导出的符号(给定它的 id;比如 35)以及每个符号被其他 rpm 条目消耗的时间。

输出布局:

符号名 | count(这个符号被消耗的次数)|

试过的解决方案:

SELECT symbol.name, count(distinct symbol.rpm_id)

FROM 符号,rpm

其中 symbol.flag = 0 && symbol.rpm_id = 35

按符号分组。名称;

但我在每个符号的计数列​​中得到“1”,这是错误的。

相关查询的语义:

第一个查询应该获取给定 rpm.id (rpm.id = 35) 导出的所有符号,然后对于结果集中的每个结果 symbol.id,它应该找到它被消耗的次数,即它的计数并在前面打印计数那个符号。

请提出一些方法/查询来获得结果。

谢谢你。

4

1 回答 1

0

试试这个解决方案

select 
    rpm.id , 
    rpm.rpm , 
    count(symbols.id) 
from rpm
left join symbols on symbols.rpm_id = rpm.id
where symbols.flag = 1
group by rpm.id

1 用于消费

于 2012-11-06T10:44:27.443 回答