За последние 24 часа нас посетил 17251 программист и 1688 роботов. Сейчас ищут 1270 программистов ...

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

Тема в разделе "MySQL", создана пользователем joost, 28 сен 2008.

  1. joost

    joost Guest

    Есть таблица (code_model, code_elem, code_znach_elem)
    1;2;4
    1;8;6
    2;11;132
    1;7;2
    3;8;11

    делаю запрос

    select distinct (code_model) from таблица where (code_elem=2 and code_zhach_elem=4) and (code_elem=8 and code_zhach_elem=6) and (code_elem=7 and code_zhach_elem=2)

    Результат 0
    Хотя должен вернуть code_model=1

    В чем проблема? Вроде все правильно?
     
  2. Anonymous

    Anonymous Guest

    неа
    Переводи на русский язык:

    выбрать неповторяющиеся (code_model) из таблица где (code_elem=2 и code_zhach_elem=4) и (code_elem=8 и code_zhach_elem=6) и (code_elem=7 и code_zhach_elem=2)

    то есть, ты задаешь противоречивые условия. Тебе нужна связка групп условий по ИЛИ а не по И
     
  3. joost

    joost Guest

    изложу запрос так

    "надо выбрать неповторяющиеся (code_model) для которых в таблице есть такие строки ( code_elem=2 и code_zhach_elem=4), (code_elem=8 и code_zhach_elem=6), (code_elem=7 и code_zhach_elem=2)"


    ИЛИ не подходит - так как пр этом запрос работает некоректно
    необходимо выполнение наявность всех строк, а не хотябы одной

    можно как-то реализовать?
     
  4. muheroes

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

    С нами с:
    24 сен 2008
    Сообщения:
    33
    Симпатии:
    0
    неа.
    создавай 3 запроса, и по очереде их выводи.
    хотя можешь попробовать - но врятли получиться code_elem=2,4,8 и code_zhach_elem=4,6,11)
     
  5. joost

    joost Guest

    muheroes
    нет так не идет
     
  6. muheroes

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

    С нами с:
    24 сен 2008
    Сообщения:
    33
    Симпатии:
    0
    тогда нам поможет оператор Do while
    PHP:
    1. <? $od=1;
    2. do
    3. {
    4. if ($od==1) {
    5. $uuu='2';
    6. $uuz='4'; }
    7. if ($od==2) {
    8. $uuu='8';
    9. $uuz='6'; }
    10.  
    11. $query = "select * from table WHERE  code_elem= '$uuu' and code_zhach_elem='$uuz' order by code_elem desc";
    12. $result = mssql_query( $query );
    13. $kkk = mssql_num_rows($result);
    14.  
    15. } while (++$od<=2) ?>
     
  7. Anonymous

    Anonymous Guest

    Вы ваще, о чем?

    таких строк в таблице нет . Ruleset применяется к каждой строке.
     
  8. joost

    joost Guest

    то как же переделать этот запрос?
    [sql]select distinct (code_model) from таблица where (code_elem=2 and code_zhach_elem=4) and (code_elem=8 and code_zhach_elem=6) and (code_elem=7 and code_zhach_elem=2)[/sql]