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

Тема в разделе "PHP", создана пользователем DangerD, 18 июн 2010.

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

    DangerD Постоялец

    Регистр.:
    2 июл 2007
    Сообщения:
    71
    Симпатии:
    13
    Первому написавшему бонус 2wmz)

    есть таблица с товарами
    id_товара ...
    и вторая таблица
    id_прикола id_товара
    приколов у одного товара может быть несколько
    дык вот, надо выбрать все товары где есть несколкьо приколов одновременно
    тобишь к примеру (id_прикола = 1 or id_прикола = 2) and (id_прикола = 3 or id_прикола = 4)
     
  2. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    как то так:

    Код:
    select a.*, b.*, count(b.id_tovara) as cnt from tovars a, prikols b 
         where a.id_tovara=b.id_tovara and cnt>1 
               group by b.id_tovara
    
     
  3. DangerD

    DangerD Постоялец

    Регистр.:
    2 июл 2007
    Сообщения:
    71
    Симпатии:
    13
    У одного товара есть несколько приколов, надо выбрать именно те где есть эти приколы одновременно (если в одном товаре он один, а другого нет, то не выводить)

    если добавить условие:
    b.prikol_id = 4 and b.prikol_id = 5 то запрос выведет пустоту... (в принципе и так понятно почему)
     
  4. DangerD

    DangerD Постоялец

    Регистр.:
    2 июл 2007
    Сообщения:
    71
    Симпатии:
    13
    +тобишь функционал как тут:
    http://hotline.ua/gd/11/8157-8158-137-139/

    фильтры:

    женский
    или
    имиджевый

    И Производитель
    LG
    или
    Nokia

    // женский имиджевый LG Nokia - это id приколов со второй таблицы
     
  5. DangerD

    DangerD Постоялец

    Регистр.:
    2 июл 2007
    Сообщения:
    71
    Симпатии:
    13
    Первому написавшему бонус 2wmz)
    тут или на http://phpclub.ru/talk/showthread.php?s=&postid=904022
     
  6. bondaf

    bondaf Постоялец

    Регистр.:
    16 мар 2010
    Сообщения:
    85
    Симпатии:
    20
    Может я чего-то не допонял, но почему бы не сделать просто
    PHP:
    select id_tovar from prikol where id_prikol and id_prikol 5
    а если нужны еще данные и из таблицы товаров, тогда как-нить так
    PHP:
    select t.id_tovart.name_tovart.cost_tovarp.prikol_namep.id_prikol from prikol p
    left join tovar t on p
    .id_tovar=t.id_tovar
    where p
    .id_prikol and p.id_prikol 5
     
  7. DangerD

    DangerD Постоялец

    Регистр.:
    2 июл 2007
    Сообщения:
    71
    Симпатии:
    13
    where p.id_prikol = 1 and p.id_prikol = 5
    а как одно и тоже значение может равнятся сразу двум?
    оба запроса вернут пустоту
     
  8. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Код:
    select * from 
    (select a.id_tovara, count(b.id_prikola) as cnt
    from tovar a 
    left join pricols b on a.id_tovara=b.id_tovara group by a.id_tovara) as t2
    where t2.cnt>1;
    
     
  9. DangerD

    DangerD Постоялец

    Регистр.:
    2 июл 2007
    Сообщения:
    71
    Симпатии:
    13
    Надо условие забить:
    (id_прикола = 1 or id_прикола = 2) and (id_прикола = 3 or id_прикола = 4)

    в данном случае просто всё выводится где есть несколько опций
     
  10. serjinio

    serjinio

    Регистр.:
    10 май 2007
    Сообщения:
    439
    Симпатии:
    49
    Давай дамп таблицы приколов строк 5
    одно могу сказать с уверенностью что структура бд неверная.
     
Статус темы:
Закрыта.