За последние 24 часа нас посетили 21945 программистов и 1662 робота. Сейчас ищут 892 программиста ...

Сложная выборка. Многие ко многим.

Тема в разделе "MySQL", создана пользователем Riddick, 2 ноя 2010.

  1. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Доброго времени суток.

    Возникла такая проблема, пишу систему проведения опросов, и появилась необходимость сделать запрос на выборку статистики по ответам:

    Есть таблица: votes

    Структура и пример заполнения:

    id id_vote id_poll id_question id_answer
    1 1 23 1 129
    2 1 23 2 130
    3 1 23 2 131
    4 1 23 3 134
    5 1 23 4 137
    6 2 23 1 127
    7 2 23 2 131
    8 2 23 2 132
    9 2 23 3 135
    10 2 23 4 137
    11 3 23 1 127
    ... ... ... ... ...

    Как выбрать id_vote где id_answer:

    WHERE votes.id_answer = 137 AND (votes.id_answer = 127 OR votes.id_answer = 134)

    Вообще офигел когда такая задача стала((( Ну думал уже смогу сделать все что моей душе угодно, ага, не тут то было.
    Возможно я не много неправильно тему назвал, не знал как еще написать.

    Пожалуйста! Помогите, не знаю уже что делать или точнее как запрос писать...

    P.S.: все мое выравнивание таблицы форум убил((

    Тут вот видна хорошо структура таблицы: http://www.sql.ru/forum/actualthread.aspx?tid=802816
     
  2. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    тут наверное не И, а ИЛИ.

    [sql]SELECT DISTINCT `votes`.`id_vote` FROM `votes` WHERE `votes`.`id_answer` IN ('137', '127', '134')[/sql]
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    [sql]select distinct v1.id_vote from votes as v1 join votes as v2 on v1.id_vote=v2.id_vote and v1.id<>v2.id
    where v1.id_answer=137 and (v2.id_answer=127 or v2.id_answer=134)[/sql]
     
  4. Riddick

    Riddick Активный пользователь

    С нами с:
    13 июн 2008
    Сообщения:
    80
    Симпатии:
    0
    Адрес:
    Россия
    Volt спасибо, интересное решение и грамотный ответ! Я доходил до решения с помощью JOIN'ов с использованием USING(id_vote), но работало не правильно...