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

Тема в разделе "Базы данных", создана пользователем Monterpan, 12 фев 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Monterpan

    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 ) первоначальному количеству пар и все узнаю
     
  2. Delirium_Tremens

    Delirium_Tremens Писатель

    Регистр.:
    27 янв 2010
    Сообщения:
    6
    Симпатии:
    0
    Можно еще создать дополнительную таблицу, например временную, и через LEFT JOIN сделать такой поиск. должно работать быстрее.
    конечно если это не разовое мероприятие.
     
Статус темы:
Закрыта.