问候!
我认为您的原始查询可能不正确。如果您的 item_properties 表有名为 (itemId, property, value) 的列,那么您的查询应该是:
SELECT i.itemName FROM items i, item_properties p
WHERE i.itemId=p.itemId AND p.property='cooling';
另外,你在这里做“隐式连接”,我不知道你想了解多少关于 SQL 的知识,而不是只想让一些东西工作,但我认为还有另一种编写查询的方法如果您打算暂时使用 SQL 数据库,那就更好了。没什么大不了的,只是第二种形式对我来说更容易阅读。
您的原始查询:
SELECT itemName FROM items i, item_properties p
WHERE i.itemId=p.itemId AND p.property='cooling';
将使用连接语法重写为:
SELECT i.itemName FROM items i
JOIN item_properties p ON i.itemId=p.itemId WHERE p.property='cooling';
我将尝试提供两种形式来回答您的问题...
选择所有“效果”为“冷却”且“消耗”为“高效”的项目(与项目“AC”匹配)。
select itemName FROM items i, item_properties p
WHERE i.itemId=p.itemId AND (p.property='cooling' AND p.value='consumption');
select i.itemName FROM items i JOIN item_properties p ON i.itemId=p.itemId
WHERE p.property='cooling' AND p.value='consumption';
选择“type”为“split”或“heatMethod”为“coil”或“consumption”为“effecient”的所有项目(匹配项目“AC”和“Heater”)。
select itemName FROM items i, item_properties p
WHERE i.itemId=p.itemId AND ((p.property='type' AND p.value='split') OR
(p.property='heatMethod' AND p.value='coil') OR
(p.property='consumption' AND p.value='efficient'));
select itemName FROM items i JOIN item_properties p ON i.itemId=p.itemId
WHERE (p.property='type' AND p.value='split') OR
(p.property='heatMethod' AND p.value='coil') OR
(p.property='consumption' AND p.value='efficient');
希望有帮助!