Нужна помощь с составлением MySQL запроса

Все вопросы/проблемы по установке и использовании.
Аватара пользователя
Parazit00
Сообщения: 32
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Нужна помощь с составлением MySQL запроса

Сообщение Parazit00 »

Здравствуйте!
Нужна помощь с составлением MySQL запроса.
Задача
1 - Имеем сущность Заказ [25] в сущности имеем поле Код заказа [214]
2 - Имеем сущность Склад [29] в сущности имеем поле Код заказа [265]

Нужно их сравнить и если код одинаковый то изменить статус на поступил в сущность Заказ [25] в поле список [217] номер статуса [75]

Заранее благодарен за любую помощь
Аватара пользователя
Parazit00
Сообщения: 32
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с составлением MySQL запроса

Сообщение Parazit00 »

Пытаюсь сам сделать запрос, но пока не выходит :cry:

Код: Выделить всё

UPDATE app_entity_25
JOIN app_entity_29 ON app_entity_25.field_214 = app_entity_29.field_265
SET app_entity_25.field_217 = '[75]'
WHERE app_entity_25.field_214 = app_entity_29.field_265
AND app_entity_25.field_217 <> '[75]';
Аватара пользователя
support
Техническая поддержка
Сообщения: 9008
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Нужна помощь с составлением MySQL запроса

Сообщение support »

Попробуйте так:

Код: Выделить всё

update app_entity_25 set app_entity_25.field_217 = '[75]' where EXISTS(select id from app_entity_29 where app_entity_25.field_214 = app_entity_29.field_265)
Аватара пользователя
Parazit00
Сообщения: 32
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с составлением MySQL запроса

Сообщение Parazit00 »

Возможно, я что-то делаю неправильно. Вот как у меня в данный момент все выглядит.
Screenshot_1.png
Screenshot_1.png (5.01 КБ) 279 просмотров
Screenshot_2.png
2 - Теперь, когда товар поступает на склад, его добавляют, и только после этого меняется статус в заказе на 'Поступил'.
Screenshot_3.png
Появляется ошибка.
Screenshot_4.png
Возможно, это из-за того, что я использую список? Может быть, нужно просто вставлять готовый текст в поле? Например, 'Поступил на склад'.
Аватара пользователя
Parazit00
Сообщения: 32
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с составлением MySQL запроса

Сообщение Parazit00 »

Я не уверен, делаю ли я правильно, но мне удалось сравнивать данные, и если они одинаковые, то в поле добавляется тот же код. Теперь я буду дальше размышлять, как отправить статус в другую сущность.
Screenshot_5.png
Screenshot_6.png
Screenshot_6.png (8.06 КБ) 242 просмотра
Прошу не ругаться сильно, я только начал изучать и пробовать реализовывать свои идеи.
Аватара пользователя
Parazit00
Сообщения: 32
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с составлением MySQL запроса

Сообщение Parazit00 »

Если кто готов помочь за вознаграждение, прошу отпишитесь. 100% кто-то да делал уже такое и использует. Я просто немного не могу разобраться, как правильно тут сделать запрос.

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

Я так думаю, я не туда вставляю запрос.
nruslan2
Сообщения: 2415
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow
Контактная информация:

Re: Нужна помощь с составлением MySQL запроса

Сообщение nruslan2 »

зачем использовать поле MySQL запрос? тем более с помошью него в принципе не решить вашу задачу это поле поиска, а не внесения данных в базу данных
используйте поле php! или лучше даже автоматизацию - пользовательский php
Аватара пользователя
Parazit00
Сообщения: 32
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с составлением MySQL запроса

Сообщение Parazit00 »

nruslan2 писал(а): 09 мар 2024, 21:34 зачем использовать поле MySQL запрос? тем более с помошью него в принципе не решить вашу задачу это поле поиска, а не внесения данных в базу данных
используйте поле php! или лучше даже автоматизацию - пользовательский php

Вот это поле использовать ?
Screenshot_18.png
Так вроде бы нашел нужное
Screenshot_3.png
Screenshot_3.png (1 КБ) 132 просмотра
Screenshot_4.png

Код: Выделить всё

try {
    $pdo = new PDO('mysql:host=хост_базы_данных;dbname=имя_базы_данных', 'пользователь', 'пароль');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "update app_entity_25
            set app_entity_25.field_217 = '75' 
			where EXISTS
			(select id from app_entity_29 where app_entity_25.field_214 = app_entity_29.field_265)";


    $stmt = $pdo->prepare($sql);
    $stmt->execute();
} catch(PDOException $e) {
    // Обработка ошибки, например, логирование или отправка уведомления администратору
}
Статусы изменились, но теперь просто пустое поле.
Screenshot_5.png
Последний раз редактировалось Parazit00 09 мар 2024, 23:12, всего редактировалось 1 раз.
Аватара пользователя
Parazit00
Сообщения: 32
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с составлением MySQL запроса

Сообщение Parazit00 »

Немного разобрался со статусами. Нужно было убрать скобки [75], чтобы стало вот так 75.

Код: Выделить всё

try {
    $pdo = new PDO('mysql:host=хост_базы_данных;dbname=имя_базы_данных', 'пользователь', 'пароль');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "UPDATE app_entity_25 
            SET app_entity_25.field_217 = '75' 
            WHERE EXISTS 
            (SELECT id FROM app_entity_29 WHERE app_entity_25.field_214 = app_entity_29.field_265)";

    $stmt = $pdo->prepare($sql);
    $stmt->execute();

    $sql2 = "UPDATE app_entity_29 
             SET app_entity_29.field_267 = '90' 
             WHERE EXISTS 
             (SELECT id FROM app_entity_25 WHERE app_entity_25.field_214 = app_entity_29.field_265)";

    $stmt2 = $pdo->prepare($sql2);
    $stmt2->execute();
} catch(PDOException $e) {
    // Обработка ошибки, например, логирование или отправка уведомления администратору
}
Сразу в двух местах сделал изменения статуса. Если код не найдет статус, будет установлено значение "Потеряшка"
Наглядный пример как стало .
Screenshot_6.png
Аватара пользователя
support
Техническая поддержка
Сообщения: 9008
Зарегистрирован: 19 окт 2014, 18:22
Имя: Харчишин Сергей
Откуда: Крым, Евпатория

Re: Нужна помощь с составлением MySQL запроса

Сообщение support »

Только повторно подключаться к базе нет необходимости.
Достаточно выполнить db_query вместо $pdo

Код: Выделить всё

db_query($sql);
Ответить