MySQL IF Условие в предложении Where - PullRequest
4 голосов
/ 23 ноября 2011

можно ли решить по условию ЕС, где пункт, который я хочу выбрать.

Что-то вроде:

IF(DATE_FORMAT(DATE(akDate), '%a')='SAT', USE WHERECLAUSE1, USE WHERECLAUSE2)

Кто-нибудь получил Сниппет или что-то для меня?

Заранее спасибо Jings

Ответы [ 3 ]

8 голосов
/ 23 ноября 2011

Это тот случай, когда вы все еще можете написать, используя довольно распространенное выражение WHERE, например:

... WHERE
(
    (DATE_FORMAT(DATE(akDate), '%a') = 'SAT')
    AND
    (WHERECLAUSE1)
)
OR
(
    (DATE_FORMAT(DATE(akDate), '%a') != 'SAT')
    AND
    (WHERECLAUSE2)
)

где, конечно, вы должны заменить WHERECLAUSE1 и WHERECLAUSE2 соответствующими условиями.

5 голосов
/ 23 ноября 2011

Легко, вы должны читать Булева алгебра .В вашем случае, здесь мы идем:

A = WhereClause1
B = WhereClause2
X = Choice

Вам нужно выбрать строки с X && A ИЛИ строки с !X && B.Так что в основном ваше выражение будет: (X && A) || (!X && B).Что приводит к:

(
    (Choice AND WhereClause1) 
    OR 
    ((NOT Choice) AND WhereClause2)
)
0 голосов
/ 30 июля 2013
$query  = " SELECT apt.apt_id,apt.reg_id,apt.u_id,apt.b_id,apt.apt_bathroom,apt.apt_size,apt.apt_rent,apt.apt_desc,apt.negotiable,apt.apt_status,apt.govt_program,building.b_borough,building.b_zipcode,building.b_type,building.b_intersection,building.b_intersection2,building.b_desc FROM apt LEFT JOIN building ON apt.b_id = building.b_id WHERE apt.apt_status = 1 AND ";
if ($search_size != 'empty')
{
    $query .= "apt.apt_size = '".$search_size."' ";
    if ($search_borough != 'empty' || $search_zipcode != 'empty' )
        {
            $query .= " AND ";
        }
}
if ($search_borough != 'empty')
{
    $query .= "building.b_borough= '".$search_borough."' ";
    if ($search_zipcode != 'empty')
        {
            $query .= " AND ";
        }
}
if ($search_zipcode != 'empty')
{
    $query .= "building.b_zipcode = '".$search_zipcode."' ";
}
$query .= "ORDER BY apt.apt_id DESC LIMIT $start,$perpage ";

$query_run = mysql_query ($query);
if (!$query_run)
{
    echo 'Error In the Query limit.';
}
...