2016-01-18 2 views
0

Я хотел бы использовать, если оператор в запросе SQL:помощью, если оператор в MySQL Query

, что я хочу:

if(tractions_delivery.send_date_id !=0){ 

      date_send_commodities.id = tractions_delivery.send_date_id 
} 

мой запрос:

 from 

      tractions_delivery,user_address,province,city,date_send_commodities,users 

     WHERE 

     tractions_delivery.tr_id = $tr_id 
     AND 
     tractions_delivery.address_id = user_address.id 
     AND 
     user_address.province_id = province.id 
     AND 
     user_address.city_id  = city.id 
     AND 
     //not work 
     (tractions_delivery.send_date_id IS NOT 0 date_send_commodities.id = tractions_delivery.send_date_id) 

     AND 
     users.id = user_address.user_id 
+0

Можете ли вы уточнить, что этот запрос должен делать, пожалуйста? – Mureinik

+2

... И случай, когда tractions_delivery.send_date_id! = 0 THEN date_send_commodities.id = tractions_delivery.send_date_id ELSE 1 = 1 END И users.id = user_address.user_id – iiro

+0

Что 'НЕ 0'? Вы можете написать 'IS NOT NULL' или' <> 0'. – i486

ответ

1

Вы можете использовать CASE-заявление

SELECT 
* 
FROM 
tractions_delivery, 
user_address, 
province, 
city, 
date_send_commodities,users 
WHERE 
tractions_delivery.tr_id = $tr_id AND 
tractions_delivery.address_id = user_address.id AND 
user_address.province_id = province.id AND 
user_address.city_id = city.id AND 
CASE WHEN tractions_delivery.send_date_id != 0 THEN date_send_commodities.id = tractions_delivery.send_date_id ELSE 1=1 END AND 
users.id = user_address.user_id 
1

Вы можете используйте только инструкции if в хранимых процедурах или функциях. Если вы просто напишете заявление sql, к сожалению, вы не можете использовать операторы if вокруг запроса. Но вы можете использовать логику в самом запросе, например .:

SELECT CASE WHEN col1 = col2 THEN'col1 equals col2' else 'col1 doesnt equal col2' ELSE 
FROM table1 

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

1

CASE или IF() Операторы могут быть полезны.

Примеры,

SELECT (CASE 1 WHEN 1 THEN 'One' WHEN 2 THEN 'Two' ELSE 'More' END) 'Result'; 

ИЛИ

SELECT IF(1=1, 'One', 'Two') 'Result'; 

Эти CASE и IF() операторов могут быть использованы в предложении SELECT условно интерпретировать значения столбцов и возврата в результирующем.

Примечание: не путайте оператор CASE здесь с 'CASE условный блок синтаксиса', который заканчивается END CASE.

Смежные вопросы