powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Условие. Выполнить это если существует это и это в другой таблице
10 сообщений из 10, страница 1 из 1
Условие. Выполнить это если существует это и это в другой таблице
    #39679331
ninzzo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хочу делать поменьше обращений к БД и научиться оптимизировать запросы.

Есть 2 таблицы в 1 БД:
-orders
-driver_orders


могу ли я сделать:
UPDATE `orders` SET `status`=7 WHERE `id`=33 ТОЛЬКО ЕСЛИ СУЩЕСТВУЕТ (SELECT * FROM `driver_orders` WHERE `driver_id`=7 AND `order_name` = "test")

Или наоборот. Если существует запись в другой таблице, то выполнить обновление(вставку, удаление и т.д.) в первой таблице.

Сейчас я делаю один запрос, потом через свой язык программировния пишу условие if($check) { выполняю второй запрос }
...
Рейтинг: 0 / 0
Условие. Выполнить это если существует это и это в другой таблице
    #39679359
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ninzzo,
используй хранимые процедуры
...
Рейтинг: 0 / 0
Условие. Выполнить это если существует это и это в другой таблице
    #39679361
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ninzzoUPDATE `orders` SET `status`=7 WHERE `id`=33 ТОЛЬКО ЕСЛИ СУЩЕСТВУЕТ (SELECT * FROM `driver_orders` WHERE `driver_id`=7 AND `order_name` = "test")


"Существует что?
Эти две таблицы должны быть как-то связаны.

Скорее всего в таблице driver_orders
должно быть поле `id` или `orders_id`


Т.Е сейчас ты делаешь запрос типа "Покрасить все машины зеленого цвета если водитель является учеником"
А надо "Покрасить все машины зеленого цвета если водитель ДАННОЙ МАШИНЫ является учеником"
...
Рейтинг: 0 / 0
Условие. Выполнить это если существует это и это в другой таблице
    #39679362
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если короче, то JOIN между таблицами надо сделать.
...
Рейтинг: 0 / 0
Условие. Выполнить это если существует это и это в другой таблице
    #39679363
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ninzzoИли наоборот. Если существует запись в другой таблице, то выполнить обновление(вставку, удаление и т.д.) в первой таблице.

Не "наоборот", а еще два других запроса на вставку данных и на удаление
(первый был на обновление данных)
...
Рейтинг: 0 / 0
Условие. Выполнить это если существует это и это в другой таблице
    #39679376
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ninzzoмогу ли я сделать:
UPDATE `orders` SET `status`=7 WHERE `id`=33 ТОЛЬКО ЕСЛИ СУЩЕСТВУЕТ (SELECT * FROM `driver_orders` WHERE `driver_id`=7 AND `order_name` = "test")SQL-язык примечателен тем, что практически влоб повторяет задачу. "СУЩЕСТВУЕТ" переводится как "EXISTS". И запрос получается
Код: sql
1.
2.
3.
4.
5.
6.
7.
UPDATE `orders` 
SET `status`=7 
WHERE `id`=33 
  AND EXISTS (SELECT 1
              FROM `driver_orders` 
              WHERE `driver_id`=7 
                AND `order_name` = 'test')


Поскольку EXISTS проверяет тупо существование записи - нет смысла возвращать все поля из таблицы, достаточно вернуть хоть что-то. Единица вместо звёздочки именно это и демонстрирует.
...
Рейтинг: 0 / 0
Условие. Выполнить это если существует это и это в другой таблице
    #39679389
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы решили задачу:
Поменять в таблице `orders` поле `orders`.`status` на 7, если `orders`.`id`=33
и если вдруг в таблице `driver_orders` driver_orders` `driver_id`=7 и `driver_orders`.`order_name` = 'test'

Вангую, что автору надо решить немного другую задачу:

Поменять в таблице `orders` поле `orders`.`status` на 7, если `orders`.`id`=33
и если таблице `driver_orders` driver_orders` `driver_id`=7 и `driver_orders`.`order_name` = 'test'
И некое поле `orders`.VANG_ID=`driver_orders`.VANG_ID
...
Рейтинг: 0 / 0
Условие. Выполнить это если существует это и это в другой таблице
    #39679400
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исправляюсь:
Вы решили задачу:
Поменять в таблице `orders` поле `orders`.`status` на 7, если `orders`.`id`=33
и если вдруг в таблице СУЩЕСТВУЮТ ЗАПИСИ `driver_orders` driver_orders` `driver_id`=7 и `driver_orders`.`order_name` = 'test'
...
Рейтинг: 0 / 0
Условие. Выполнить это если существует это и это в другой таблице
    #39679464
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183Вы решили задачуЭто адресовано мне? Ну так я решаю задачу строго ту, которую ставит автор. А что он просит не то, что хочет - так чьи это проблемы?
...
Рейтинг: 0 / 0
Условие. Выполнить это если существует это и это в другой таблице
    #39679472
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я ж без претензий.
Просто я критично отнесся к ТЗ.
Дурная привычка искать гадости везде и всегда.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Условие. Выполнить это если существует это и это в другой таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]