Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Помогите составить в один запрос. (саша) 02/02/2012 - 05:46:55
      Re: В корне неверный подход. (Akina) 02/02/2012 - 10:41:00
      Re: В корне неверный подход. (саша) 02/02/2012 - 15:01:09
      Re: В корне неверный подход. (Akina) 02/02/2012 - 18:17:23
      Re: В корне неверный подход. (саша) 02/02/2012 - 20:32:20
      Re: В корне неверный подход. (Akina) 02/02/2012 - 23:05:02

> Original message text:
> From: саша - 02/02/2012 - 05:46:55
> Subject:Помогите составить в один запрос.
> -----------------
> CREATE TABLE `test` (
> `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
> `zona` char(30) NOT NULL DEFAULT '',
> `razdel` char(30) NOT NULL DEFAULT '',
> `podrazdel` char(30) NOT NULL DEFAULT '',
> PRIMARY KEY (`id`)
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
>
>
> INSERT INTO `test` (`id`, `zona`, `razdel`, `podrazdel`, `act`)
> VALUES
> (1,'index','0','0','1'),
> (2,'index','counrty','0','1'),
> (3,'index','0','0','1'),
> (4,'index','country','souvenirs','1'),
> (5,'0','0','0','0'),
> (6,'index','city','0','1'),
> (7,'0','0','0','0'),
> (8,'index','country','souvenirs','1'),
> (9,'0','0','0','0'),
> (10,'0','0','0','0');
>
>
> Помогите решить одним запросом.
> Вот если есть переменная $perem3 нужно залезть в podrazdel и посмотреть совпадают ли они. Если совпали условие выполняется. Так же с переменной $perem2 (razdel) и $perem1 (zona)
> То есть как-то так:
>
> if ($perem3==souvenirs) { //
> $zapros3="AND `podrazdel`='$perem3'";
> }
> if ($perem2==country) {
> $zapros2="AND `razdel`='$perem2'";
> }
> if ($perem1==index) {
> $zapros1="AND `zona`='$perem1'";
> }
> Но если $perem3 не souvenirs то и $zapros3 в базе не выполняется..
> Объяснил на сколько мог..
>
> $res=mysql_query("
> SELECT *
> FROM `test`
> WHERE act=1
> ".$zapros3."
> ".$zapros2."
> ".$zapros1."
> ")
> Что-то типа такого... Может есть какие-то операторы которые смотрят на совпадение полей?
>


From: Akina - 02/02/2012 - 10:41:00
Subject:В корне неверный подход.
-----------------
Не надо выносить на SQL-сервер логику клиента. Это в любом случае скажется отрицательно на производительности, да и трафик увеличит.

Сколько там полей, для которых может быть задано или не задано условие отбора? три? значит, всего-то имеем 8 вариантов... вот и организуйте на клиенте динамическое построение строки запроса и передачу на сервер сформированного окончательного текста.

И отвыкайте от непосредственного написания текста запроса в mysql_query. Что, переменных жалко?

$sql = "SELECT * FROM `test` WHERE act=1 AND";
if ($perem3==souvenirs) {$sql.=" `podrazdel`='$perem3' AND";}
if ($perem2==country) {$sql.=" `razdel`='$perem2' AND";}
if ($perem1==index) {$sql.=" `zona`='$perem1' AND";}
$sql = substr($sql,0,-4);
$res = mysql_query($sql) or exit("Error while quering: ".$sql);


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
41012



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |