За последние 24 часа нас посетили 60254 программиста и 1809 роботов. Сейчас ищут 2286 программистов ...

sql запрос и условие

Тема в разделе "PHP для новичков", создана пользователем Fuuuuu, 27 ноя 2011.

  1. Fuuuuu

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

    С нами с:
    20 ноя 2011
    Сообщения:
    24
    Симпатии:
    0
    Ещё раз здравствуйте опять прошу помощи
    Идёт выборка из 2 таблиц, нужно сделать так если в запросе а переменной $val стоит 0 то строка AND (I.val4 = $val4) должно отсутствовать а если что то другое то присутствовать.
    PHP:
    1.  
    2. case 'a':
    3. $sql = "SELECT *
    4. FROM table as I
    5. JOIN table2 as N
    6. ON (I.val1 = aaa) AND (I.val2 = bbb) AND (I.val4 = $val4) AND (I.val5 = N.val5)
    7. break;
    8.  
    Пробовал сделать так но не выходит :)
    PHP:
    1.  
    2. case 'a':
    3. $sql = "SELECT *
    4. FROM table as I
    5. JOIN table2 as N
    6. ON (I.val1 = aaa) AND (I.val2 = bbb) "if ($val4 == 0){}else AND (I.val4 = $val4);" AND (I.val5 = N.val5)
    7. break;
    8.  
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    $sql = "SELECT *
    FROM table as I
    JOIN table2 as N
    ON (I.val1 = aaa) AND (I.val2 = bbb)";

    if ($val4 != 0)
    $sql .= " AND (I.val4 = $val4);"

    $sql .= " AND (I.val5 = N.val5);


    Погугли что такое конкатенация строк.
     
  3. alive342

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

    С нами с:
    21 апр 2011
    Сообщения:
    137
    Симпатии:
    0
    Адрес:
    Российская Федерация
    PHP:
    1.  
    2. <?php
    3. $sql = "SELECT *
    4. FROM table as I
    5. JOIN table2 as N
    6. ON (I.val1 = aaa) AND (I.val2 = bbb) " . ($val4 ? " AND (I.val4 = $val4) " : "") . " AND (I.val5 = N.val5)";
    7.  
     
  4. Fuuuuu

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

    С нами с:
    20 ноя 2011
    Сообщения:
    24
    Симпатии:
    0
    tommyangelo Спасибо прочту! только не совсем понял, или вы что то не дописали или ещё что-то но уменя пишет синтекс ерор :(
    alive342 Спасибо, это упрощёний if else? можно сылку на синтаксис? а то гугл не хочет отобразить мои мысли в запросе :)
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Fuuuuu
    Я привел пример, причем не отличающийся от примера alive342, у него запись короче, используется тернарный оператор http://php.su/learnphp/operators/?compar

    Твой запрос даже не читал. показал как разбить на части, а ты уж сам его корректно напиши, отладь например в phpmyadmin, а только потом в php засовывай.