您好!
我认为您的原始查询可能不正确.. 如果您的 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 数据库,think 可能会更好。没什么大不了的,只是第二种形式对我来说更容易阅读。
您的原始查询:
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');
希望有帮助!