- Автор темы
- #1
Есть следующая таблица:
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 минут
Разобрался.
Кому интересно:
Запрос
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 ) первоначальному количеству пар и все узнаю
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 минут
Разобрался.
Кому интересно:
Запрос
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 ) первоначальному количеству пар и все узнаю