Привет!
Я думаю, что ваш исходный запрос может быть неправильным ... если в вашей таблице 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';
выбрать все элементы, чей «тип» - «раздельный» ИЛИ «heatMethod» - «катушка», ИЛИ «потребление» - «эффективный» (что соответствует элементам «АС» и «Утеплитель ').
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');
Надеюсь, это поможет!