Нужна помощь с получением ID записи

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

Нужна помощь с получением ID записи

Сообщение Parazit00 »

Добрый день ! Как получить ID записи если сравнить 2 сущности с 2 полями и если данные у них одинаковые то получить ID

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

SELECT id FROM app_entity_29 WHERE app_entity_25.field_214 = app_entity_29.field_265
Пример как хочу использовать полученный ID

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

$entity_id = 25; 
$item_id = [id]

//prepare data to update
$data = [
  'field_217' => 75, //change status
];

//run item update by id
items::update_by_id($entity_id,$item_id,$data);
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Нужна помощь с получением ID записи

Сообщение Fait »

Parazit00 писал(а): 14 мар 2024, 14:13 Добрый день ! Как получить ID записи если сравнить 2 сущности с 2 полями и если данные у них одинаковые то получить ID

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

SELECT id FROM app_entity_29 WHERE app_entity_25.field_214 = app_entity_29.field_265
Пример как хочу использовать полученный ID

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

$entity_id = 25; 
$item_id = [id]

//prepare data to update
$data = [
  'field_217' => 75, //change status
];

//run item update by id
items::update_by_id($entity_id,$item_id,$data);
Можно двумя запросами.
Сначала в сущности 25 забрать значение поля 214.
Потом сделать запрос в сущность 29 с условием, что поле 265 = значению, полученному в предыдущем запросе. И забрать отсюда id записи.

Если непонятно, распишу подробно.
tehnos
Сообщения: 127
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: Нужна помощь с получением ID записи

Сообщение tehnos »

Используйте вложенный запрос. Имеет вот такой вид:

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

SELECT `id` FROM `app_entity_29` WHERE `field_265` = (SELECT `field_214` FROM `app_entity_25` WHERE ????? );
Но ещё надо условие выборки из сущности 25 (подставьте вместо ?????).
Аватара пользователя
Parazit00
Сообщения: 30
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с получением ID записи

Сообщение Parazit00 »

Fait писал(а): 14 мар 2024, 15:51
Parazit00 писал(а): 14 мар 2024, 14:13 Добрый день ! Как получить ID записи если сравнить 2 сущности с 2 полями и если данные у них одинаковые то получить ID

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

SELECT id FROM app_entity_29 WHERE app_entity_25.field_214 = app_entity_29.field_265
Пример как хочу использовать полученный ID

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

$entity_id = 25; 
$item_id = [id]

//prepare data to update
$data = [
  'field_217' => 75, //change status
];

//run item update by id
items::update_by_id($entity_id,$item_id,$data);
Можно двумя запросами.
Сначала в сущности 25 забрать значение поля 214.
Потом сделать запрос в сущность 29 с условием, что поле 265 = значению, полученному в предыдущем запросе. И забрать отсюда id записи.

Если непонятно, распишу подробно.
Могли бы вы рассказать более подробно? Я уже мучаюсь с этой проблемой 4 дня, но так и не могу получить ID c app_entity_25.field_214. Моя цель - получить ID для смены статуса заказа, который добавлен к 1-ой сущности app_entity_25.field_214.
У меня есть вторая сущность app_entity_29.field_265, в которую я добавляю полученный товар через поле ввода. Затем я пытаюсь сравнить записи через PHP. Если в сущности app_entity_25.field_214 найден код, то мне нужно получить ID и выполнить соответствующий код выше для изменения статуса.
tehnos
Сообщения: 127
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: Нужна помощь с получением ID записи

Сообщение tehnos »

Не понятно написана задача.
Какого типа поля field_214 и field_265 ? Что в них хранится?
Аватара пользователя
Parazit00
Сообщения: 30
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с получением ID записи

Сообщение Parazit00 »

tehnos писал(а): 14 мар 2024, 18:29 Не понятно написана задача.
Какого типа поля field_214 и field_265 ? Что в них хранится?
В данное поле добавляет заказ клиент, из него мне нужно получить ID
Screenshot_12.png
Screenshot_12.png (4.59 КБ) 354 просмотра
В данное поле добавляется на склад и после добавления нужно найти по коду совпадения
Screenshot_13.png
Screenshot_13.png (4.69 КБ) 354 просмотра
Получается код берется из 265 и сравнивает с полем 214 и если есть берет ID из 214 и выполняет запрос на смену статуса.

В данных полях хранятся данные вот такого формата - JT1234567193295
Screenshot_14.png
Screenshot_14.png (3.76 КБ) 352 просмотра
tehnos
Сообщения: 127
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: Нужна помощь с получением ID записи

Сообщение tehnos »

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

$entity_id = 25; 
$data = array('field_217' => 75);
$query = db_query("SELECT `id` FROM `app_entity_25` WHERE `field_214` IN (SELECT `field_265` FROM `app_entity_29` WHERE `field_265` <> '')");
// если в результате запроса вернётся несколько записей используем цикл чтобы обработать все
while($result = mysqli_fetch_assoc($query)) {
	$item_id = $result['id'];
	items::update_by_id($entity_id, $item_id, $data);
}
В условие основного запроса надо ещё добавить что-нибудь связанное со статусами, чтобы не выбирать каждый раз абсолютно все совпадающие записи, а выбрать только с нужным статусом и совпадением по коду посылки.
Аватара пользователя
Parazit00
Сообщения: 30
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с получением ID записи

Сообщение Parazit00 »

tehnos писал(а): 14 мар 2024, 19:25

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

$entity_id = 25; 
$data = array('field_217' => 75);
$query = db_query("SELECT `id` FROM `app_entity_25` WHERE `field_214` IN (SELECT `field_265` FROM `app_entity_29` WHERE `field_265` <> '')");
// если в результате запроса вернётся несколько записей используем цикл чтобы обработать все
while($result = mysqli_fetch_assoc($query)) {
	$item_id = $result['id'];
	items::update_by_id($entity_id, $item_id, $data);
}
В условие основного запроса надо ещё добавить что-нибудь связанное со статусами, чтобы не выбирать каждый раз абсолютно все совпадающие записи, а выбрать только с нужным статусом и совпадением по коду посылки.
Большое вам человеческое спасибо. Теперь все работает как я хотел.
Аватара пользователя
Parazit00
Сообщения: 30
Зарегистрирован: 04 мар 2024, 19:21
Имя: Артём
Откуда: Казахстан, Тараз
Контактная информация:

Re: Нужна помощь с получением ID записи

Сообщение Parazit00 »

Можно еще 1 вопрос а можно ли использовать "Поле для текста"
С вот такими данными?
Screenshot_15.png
Screenshot_15.png (2.77 КБ) 242 просмотра
И каждую строку проверить и изменить ей статус ?
Если возможно, и вас это не затруднит, можно готовое решение.
tehnos
Сообщения: 127
Зарегистрирован: 13 сен 2021, 17:10
Имя: Евгений
Откуда: Алушта

Re: Нужна помощь с получением ID записи

Сообщение tehnos »

Опять ничего не понятно. Какое поле... какой строке изменить статус... Ну или может я тупой. Вот Вам наводка, а дальше думайте алгоритм сравнений.
Для превращения текста из поля ($text) в массив значений ($text_arr) с разделением по пробелу или по переносу строки используйте:

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

$text_arr = preg_split("/\s+/", $text, 0, PREG_SPLIT_NO_EMPTY);
Ответить