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




MySQL.RU - Webboard



Вернуться
Условное выполнение в MySQL (pwn) 16/06/2007 - 00:43:53
      Re: Условное выполнение в MySQL (EuGen) 21/06/2007 - 12:39:42
      Re: Условное выполнение в MySQL (pwn) 03/07/2007 - 01:59:30
      Re: Re: Условное выполнение в MySQL (pwn) 03/07/2007 - 02:08:45

> Original message text:
> From: pwn - 16/06/2007 - 00:43:53
> Subject:Условное выполнение в MySQL
> -----------------
> Hi All!
>
> Перерыл всю доку по MySQL, но нигде в этом недоязыке которым является SQL понимаемый MySQL не нашел операторов условного выполнения, позволяющие пропускать или выполнять кусок кода в зависимости от работы предыдущего куска. максимум что есть, условия работающие со строками. Например нужно выполнить select в зависимости от условия либо пропустить его и не выполнять совсем. Путем манипуляций получился такой изврат
>
> set @Skip=0; -- или =1;
> set @x=if(@skip,(select concat(@a:=fio,@b:=adminname,@c:=id) from admins where id=5),"aaa");
> select @a,@b,@c;
>
> в зависимости от значения @Skip select либо выполняется либо невыполняется, если выполняется то результат оказыватеся в переменных @a,@b,@c и их можно по ходу юзать далее, но это жуткий изврат, который имеет жуткие ограничения.
>
> Кто знает, можно ли написать условную обработку без извращений или как я правильно догадался в MySQL нет стуктур управления?
> Ни циклов, ни ветвлений, ни переходов, ни прерывания выполнения скрипта в зависимости от условия?
>
>
>


From: pwn - 03/07/2007 - 01:59:30
Subject:Условное выполнение в MySQL
-----------------
>Так что проще всего на мой взгляд в скрипте все условия писать когда что и где тебе нужно выполнять. Так будет логичнее и правильнее.

Согласен, но когда вопрос упирается в быстродействие, когда напрягать PHP чтобы он дергал Х раз MySQL только для того чтобы в конце получить "да" или "нет", 0 или 1, особенно если окажется что конект к БД не быстрый... то дешевле напряч именно сервак БД, чтобы он за раз прожевал скрипт и выдал что требуется.

P.S. Я все же реализовал это, в одном запросе за раз вычитывается инфа из таблиц, проверяется, в зависимости от результата либо вычитывается инфа из других таблиц либо сразу отдается результат. Работает. Шустро. Правда я не завидую тому кто будет после меня пытаться понять как этот запрос работает...
Единственно есть засада - переменные в которые суется результат выполнения селекта предварительно нужно обнулять, иначе они живут пока жив конект к БД (т.е. пока не отработал PHP скрипт), запрос естестно выполняется неоднократно, и в каих-то случаях я так и не понял кто кэширует сервак БД или msqli интерфейс, но в некоторых случаях селект нифига не выполняется (типа а нафига? в кэше все есть) и отдавался в итоге результат предыдущего запроса. 8() Чуть мозжечок себе не поломал пока отрыл в чем грабли...


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

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

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



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