返回表中的特定类型的条目(SQL)

时间:2015-11-29 22:35:26

标签: mysql

我有三个建筑物,EnergyType和EnergyCategory。前两个通过名为build_types的桥表连接。后两个通过具有相关ID(type_ID = cat_ID)来连接。

此连接输出建筑物及其使用的每种能源类型:

SELECT B.building, E.energytype
FROM Buildings b
INNER JOIN build_types bt ON B.build_ID = bt.build_ID
INNER JOIN EnergyTypes e ON bt.type_ID = E.type_ID
ORDER BY B.building;

此连接输出每种能量类型的总数:

SELECT E.energytype, COUNT(*)
FROM Buildings b
LEFT JOIN build_types bt ON B.build_ID = bt.build_ID
LEFT JOIN EnergyTypes e ON bt.type_ID = E.type_ID
GROUP BY E.energytype;

我想要一个select语句,它将返回左侧的建筑物名称和右侧的能量类别的表格,只有描述的类别为“可更新”。我有:

SELECT B.building, E.energytype, E.energycategory
FROM Buildings b
INNER JOIN build_types bt ON B.build_ID = bt.build_ID
INNER JOIN EnergyTypes e ON bt.type_ID = E.type_ID
INNER JOIN EnergyCategories e ON E.cat_ID = E.type_ID
WHERE E.energycategory = 'Renewable';

但我收到错误1066:不是唯一的表/别名'EnergyTypes'。

2 个答案:

答案 0 :(得分:1)

您为EnergyTypesEnergyCategories选择了别名“E”。

SELECT B.building, T.energytype, C.energycategory
FROM Buildings b
INNER JOIN build_types bt ON B.build_ID = bt.build_ID
INNER JOIN EnergyTypes T ON bt.type_ID = T.type_ID
INNER JOIN EnergyCategories C ON C.cat_ID = T.type_ID
WHERE C.energycategory = 'Renewable';

应该有用。

答案 1 :(得分:0)

更改其中一个表的别名。为其中一个制作'e'其他东西。