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

Форум MySQL

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

 

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

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

тема: Запрос для MySQL с условием
 
 автор: alexhardware   (08.12.2004 в 15:57)   письмо автору
 
 

Может кто подскажет новичку, как сделать запрос. Есть таблица, в которой есть индекс и значение. Надо, чтобы производился поиск по заданному значению и если значения нет в таблице, то оно заносилось туда и в итоге выдавался индекс этого значения.
Запрос нужен для Delphi - поэтому желательно, чтобы все выполнял MySQL, а не Delphi.

   
 
 автор: cheops   (08.12.2004 в 16:10)   письмо автору
 
   для: alexhardware   (08.12.2004 в 15:57)
 

А какой компонент используется, не dbExpress часом? Здесь как и в PHP всё может сильно зависить от API-функций компонента...
Вообще сначала следует поискать значение
SELECT * FROM tbl WHERE id=45

Если число возвращённых строк будет равно 0, следовательно следует добавить новое значение
INSERT INTO tbl VALIES (NULL,45)

Это запрос в предположении, что индекс снабжён атрибутом AUTO_INCREMENT, что автоматически присваиваивает ему значение максимального значения плюс единица.
Далее зависит от компонента, в нём может быть функция возвращающее id, а может и не быть, если его нет следует воспользоваться встроенной функцией LAST_INSERT_ID():
SELECT LAST_INSERT_ID()

   
 
 автор: alexhardware   (08.12.2004 в 16:18)   письмо автору
 
   для: cheops   (08.12.2004 в 16:10)
 

используется Direct Objects for MySQL. У меня сначала идет поиск, потом проверка сколько строк вернулось - если 0, то вставляем строку и делаем опять поиск. Но хотелось бы это сделать на MySQL-сервере, а не на локальной машине. А то получается достаточно много обращений по сети, т.к. по этому принципу запрашивается 6 значений. И каждое рыщет в своей таблице. Автоинкремент стоит.

   
 
 автор: cheops   (08.12.2004 в 16:31)   письмо автору
 
   для: alexhardware   (08.12.2004 в 16:18)
 

Хреновость текущих версий MySQL заключается в том, что в них нет хранимых процедур - поэтому приходится туда сюда гонять данные по сети... это придётся либо терпеть, либо ставить другую базу данных (MS SQL), либо разбираться с MySQL 5 (поговаривают, что в ней они появились, сам я правда с ней не работал).

   
 
 автор: alexhardware   (08.12.2004 в 16:42)   письмо автору
 
   для: cheops   (08.12.2004 в 16:31)
 

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

   
Rambler's Top100
вверх

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