Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Изменение логики выполнения SQL-запроса в зависимости от существования переменной
 
 автор: kapitalist   (03.04.2014 в 21:23)   письмо автору
 
 

Всем доброго времени суток. Есть запрос:
"SELECT
  order.user_num, managers.id, managers.email, 
  managers.phone, managers.password, managers.id_company, 
  managers.type, company.balance, company.nds, 
  company.name, company.logo, company.url, company.form, 
  DATE_FORMAT(date_to, '%d.%m.%Y') as date_to 
FROM
  `order`, `managers`, `company`
WHERE
  managers.id='$_SESSION[id]' and 
  company.id='$_SESSION[id_company]' and 
  order.id_company='$_SESSION[id_company]'
ORDER BY
  order.id DESC"


Если order.id_company='$_SESSION[id_company]' - если такой записи нет, то ВЕСЬ запрос вообще не выполняется.
А мне нужно, чтобы если такой записи нет, то получались другие данные вложенные в запросе. Как это сделать????

  Ответить  
 
 автор: psychomc   (03.04.2014 в 23:17)   письмо автору
 
   для: kapitalist   (03.04.2014 в 21:23)
 

лол. запрос выполняется в любом случае если нем нет ошибок, а вот данные можно и не получить. делайте 2 запроса, если первый данные не вернул - выполняйте второй

  Ответить  
 
 автор: kapitalist   (04.04.2014 в 09:56)   письмо автору
 
   для: psychomc   (03.04.2014 в 23:17)
 

Ясно. Спасибо. Надеялся, что это будет возможно сделать одним запросом.

  Ответить  
 
 автор: psychomc   (04.04.2014 в 10:29)   письмо автору
 
   для: kapitalist   (04.04.2014 в 09:56)
 

здесь сложно что-либо советовать, т.к не понятно что вы подразумеваете под "другими данными", если это фактически тот же запрос, но без условия session, тогда можно выгребать изначально всё одним запросом и на стороне PHP уже решать что делать с данными. если это кардинально другой запрос то выполнять точно отдельно

  Ответить  
 
 автор: kapitalist   (05.04.2014 в 21:02)   письмо автору
 
   для: psychomc   (04.04.2014 в 10:29)
 

По сути идет запрос
SELECT order.user_num, managers.id, managers.email, managers.phone, managers.password,
managers.id_company, managers.type, company.balance, company.nds, company.name, company.logo,
company.url, company.form, DATE_FORMAT(date_to, '%d.%m.%Y') as date_to FROM `order`, `managers`, 
`company` WHERE managers.id='$_SESSION[id]' and company.id='$_SESSION[id_company]' and 
order.id_company='$_SESSION[id_company]' ORDER BY order.id DESC

Но если значение order.user_num не получено, то есть равно 0, то нужны все остальные данные из этого же запроса.

  Ответить  
 
 автор: bab-nike   (14.04.2014 в 20:02)   письмо автору
 
   для: kapitalist   (03.04.2014 в 21:23)
 

правильно, выборка данных осуществляете с явным указанием условия WHERE
WHERE 
  managers.id='$_SESSION[id]' and  
  company.id='$_SESSION[id_company]' and  
  order.id_company='$_SESSION[id_company]'

если нету совпадения хотя бы в одном условии, то вернет пустой результат.
Может вместо AND(И) Вам нужно OR(ИЛИ) использовать?
-----
Ну или просто вот так

<?php
$query_str
="SELECT 
  order.user_num, managers.id, managers.email,  
  managers.phone, managers.password, managers.id_company,  
  managers.type, company.balance, company.nds,  
  company.name, company.logo, company.url, company.form,  
  DATE_FORMAT(date_to, '%d.%m.%Y') as date_to  
FROM 
  `order`, `managers`, `company` 
WHERE "
;  
if (isset(
$_SESSION[id])) $query_str.=" managers.id='$_SESSION[id]'
                                        and  company.id='
$_SESSION[id_company]'
                                        and  order.id_company='
$_SESSION[id_company]'
                                        ORDER BY order.id DESC"
;
else  
$query_str.="_ДРУГОЕ УСЛОВИЕ_";
$res_sql mysql_query($query_str);
 
?>

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования