Помогите с запросом

Статус
В этой теме нельзя размещать новые ответы.

Monterpan

Постоялец
Регистрация
3 Мар 2008
Сообщения
150
Реакции
27
Есть следующая таблица:
id : varid : contentid : value
1 : 5 : 9 : 15
2 : 4 : 9 : 49
3 : 7 : 9 : 13
4 : 5 : 8 : 89
5 : 4 : 8 : 45
6 : 7 : 8 : 73
Требуется по известным парам varid-value найти соответствующий contentid.
Например есть три пары varid-value:
varid = 5, value = 89
varid = 4, value = 45
varid = 7, value = 73
Должно выдать contentid = 8.
При
varid = 4, value = 49
varid = 7, value = 13
Получить contentid = 9
Если соответствия нет, получить null.
Спасибо.
Добавлено через 55 минут
Разобрался. :yahoo:
Кому интересно:
Запрос
SELECT COUNT( contentid ) , contentid
FROM `table`
WHERE (
( varid = '5' AND value = '89' )
OR
( varid = '4' AND value = '45' )
OR
( varid = '7' AND value = '73' )
)
GROUP BY contentid
ORDER BY COUNT( contentid ) DESC
LIMIT 0 , 1
мне выдаст contentid, где больше всего совпало пар.
Дальше я проверю вручную равно ли COUNT( contentid ) первоначальному количеству пар и все узнаю
 
Можно еще создать дополнительную таблицу, например временную, и через LEFT JOIN сделать такой поиск. должно работать быстрее.
конечно если это не разовое мероприятие.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху