Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2013, 21:45   #1
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию MySQL Не могу составить условие

Проблема вот в чем:
Если в таблице `IP` существует запись "127.0.0.1", то выполнить
SELECT * FROM `table1`
иначе выполнить
SELECT * FROM `table2`

Как реализовать условие?
hon вне форума Ответить с цитированием
Старый 25.04.2013, 22:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм...
Код:
SELECT * FROM `table1` where (1=1) and (select count(*) from IP where поле='127.0.0.1')>0
union all
SELECT * FROM `table2` where (1=1) and (select count(*) from IP where поле='127.0.0.1')=0
Насчет заглущек (1=1) это перестраховка. Читал что не все СУБД так просто поддерживают составной запрос в условном операторе where
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.04.2013, 22:37   #3
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

А если мне нужно в случае выполнения условия сделать INSERT, а в случае невыпонения UPDATE ?
Я вообще думал, что в MySQL есть более-менее нормальный IF.
hon вне форума Ответить с цитированием
Старый 25.04.2013, 22:40   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Тогда пиши хранимую процедуру.
Что-то типа:
Код:
declare cnt int;
cnt=(select count(*) from IP where поле='127.0.0.1')
if cnt>0 then
 insert...
else
 update...
end;
Хотя признаюсь честно - ХП я знаю поверхностно.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.04.2013, 11:48   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Сообщение от hon Посмотреть сообщение
А если мне нужно в случае выполнения условия сделать INSERT, а в случае невыпонения UPDATE ?
в db2, например, для этого есть merge
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 26.04.2013, 12:32   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В MySQL хорошая конструкция для INSERT или UPDATE
Код:
INSERT ... ON DUPLICATE KEY UPDATE ...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.04.2013, 21:41   #7
hon
Форумчанин
 
Регистрация: 08.06.2011
Сообщений: 693
По умолчанию

Аватар, спасибо. Отличная конструкция!
Stilet, очень интересное решение, обязательно использую при необходимости, но конструкция Аватар в данном случае удобнее.
hon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
никак не могу составить программы на паскале... кто нибудь помогииите составить программу program_1 Паскаль, Turbo Pascal, PascalABC.NET 1 04.12.2012 19:52
Составить простое условие Steh PHP 8 08.05.2012 19:23
Составить условие проверки вхождения числа в заданный диапазон (Delphi) Hylim1991 Помощь студентам 1 22.03.2012 08:16
Не получается составить условие artemavd Общие вопросы Delphi 10 19.12.2011 04:58
Mysql+Delphi 2010 Использую libmysql.dll + mysql.pas не могу инф сохранить в базу kGpROGER БД в Delphi 7 30.12.2010 18:27