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

Тема в разделе "Базы данных", создана пользователем Vallium, 26 окт 2016.

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

    Vallium

    Регистр.:
    22 авг 2014
    Сообщения:
    204
    Симпатии:
    29
    Помогите с запросом - туплю (
    Есть база, например tbl1 со структурой
    product_id | attribute_id | text

    как мне выбрать все product_id у которых связки значений attribute_id=16 с text=2 и одновременно attribute_id=17 с text=3

    написал так, но не работает
    SELECT product_id FROM tbl1 WHERE (attribute_id = 16 AND text = '2') AND (attribute_id = 17 AND text = '3')
     
  2. Bezhev

    Bezhev

    Регистр.:
    26 дек 2012
    Сообщения:
    364
    Симпатии:
    124
    Код:
    SELECT product_id FROM tbl1 WHERE (attribute_id = 16 AND text = '2') OR (attribute_id = 17 AND text = '3') 
    ?
     
  3. Vallium

    Vallium

    Регистр.:
    22 авг 2014
    Сообщения:
    204
    Симпатии:
    29
    or это или - если хоть одно условие выполниться, а мне нужно оба условия
     
  4. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.582
    Симпатии:
    1.484
    Надо через OR.
    Код:
    SELECT product_id FROM tbl1 WHERE (attribute_id = 16 AND text = '2') OR (attribute_id = 17 AND text = '3')
    
    Суть в неверном вопросе, надо так: выбери строку, если в ней есть поля 16 и 2 или если есть 17 и 3
    И вот тогда как рази получишь эти 2 строки
     
  5. Vallium

    Vallium

    Регистр.:
    22 авг 2014
    Сообщения:
    204
    Симпатии:
    29
    Мне как раз нужно И
    с или работать не будет:
    например если связки (attribute_id = 16 AND text = '2') не будет то все равно выберется строка
     
    Последнее редактирование: 27 окт 2016
  6. Bezhev

    Bezhev

    Регистр.:
    26 дек 2012
    Сообщения:
    364
    Симпатии:
    124
    всёравно не понятно. опиши нормально условие. из описанного выше, нужно выбирать через OR
     
  7. Vallium

    Vallium

    Регистр.:
    22 авг 2014
    Сообщения:
    204
    Симпатии:
    29
    повторяю:
    как мне выбрать product_id у которого обязательно есть связки значений (attribute_id=16 с text=2) И ОДНОВРЕМЕННО (attribute_id=17 с text=3)

    решил без доп. таблиц через left join - не очень изящно, но работает
     
    Последнее редактирование модератором: 27 окт 2016
  8. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.582
    Симпатии:
    1.484
    Не правильно понял запрос, джойн таблицы на саму себя по product_id первое что и мне пришло в голову.
    Отредактируй свой предыдущий пост, добавив решение, наверняка кому-то пригодится.
     
Статус темы:
Закрыта.