MySQL выбирает одно поле из таблицы, ГДЕ условие находится в нескольких строках

Пытался найти ответ, но так и не смог.. Таблица такая:

id, keyword,   value
1   display    15.6
1   harddrive  320
1   ram        3

Итак, мне нужно что-то вроде этого. Выберите идентификатор из этой таблицы, где (keyword="display" and value="15.6") AND (keyword="harddrive" and value="320") Также есть вероятность, что будет 3 или 4 таких условия ключевого слова, которые должны привести к возврату одного идентификатора (одна строка)

Кажется, есть что-то, что нужно сделать с UNION, но я не использовал его раньше, поэтому не могу понять

заранее спасибо


person Alex K    schedule 30.12.2010    source источник


Ответы (1)


Это проблема реляционного деления. Что-то вроде следующего должно сделать это.

SELECT id
FROM your_table
WHERE 
(keyword="display" and value="15.6") OR (keyword="harddrive" and value="320")
GROUP BY id
HAVING COUNT(*) = 2

Я предполагаю, что ваша таблица имеет соответствующие ограничения, поэтому невозможно полностью дублировать строку. (например, на id, keyword есть ПК)

person Martin Smith    schedule 30.12.2010
comment
это оно! Спасибо! а ссылка хорошая, уже изучаю. Отлично :) о, и да, дублированные строки запрещены во что бы то ни стало - person Alex K; 30.12.2010