Страница 1 из 2
Нужна помощь с получением ID записи [Решено]
Добавлено: 14 мар 2024, 14:13
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);
Re: Нужна помощь с получением ID записи
Добавлено: 14 мар 2024, 15:51
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 записи.
Если непонятно, распишу подробно.
Re: Нужна помощь с получением ID записи
Добавлено: 14 мар 2024, 15:54
tehnos
Используйте вложенный запрос. Имеет вот такой вид:
Код: Выделить всё
SELECT `id` FROM `app_entity_29` WHERE `field_265` = (SELECT `field_214` FROM `app_entity_25` WHERE ????? );
Но ещё надо условие выборки из сущности 25 (подставьте вместо ?????).
Re: Нужна помощь с получением ID записи
Добавлено: 14 мар 2024, 17:11
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 и выполнить соответствующий код выше для изменения статуса.
Re: Нужна помощь с получением ID записи
Добавлено: 14 мар 2024, 18:29
tehnos
Не понятно написана задача.
Какого типа поля field_214 и field_265 ? Что в них хранится?
Re: Нужна помощь с получением ID записи
Добавлено: 14 мар 2024, 18:36
Parazit00
tehnos писал(а): 14 мар 2024, 18:29
Не понятно написана задача.
Какого типа поля field_214 и field_265 ? Что в них хранится?
В данное поле добавляет заказ клиент, из него мне нужно получить ID

- Screenshot_12.png (4.59 КБ) 2241 просмотр
В данное поле добавляется на склад и после добавления нужно найти по коду совпадения

- Screenshot_13.png (4.69 КБ) 2241 просмотр
Получается код берется из 265 и сравнивает с полем 214 и если есть берет ID из 214 и выполняет запрос на смену статуса.
В данных полях хранятся данные вот такого формата - JT1234567193295

- Screenshot_14.png (3.76 КБ) 2239 просмотров
Re: Нужна помощь с получением ID записи
Добавлено: 14 мар 2024, 19:25
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);
}
В условие основного запроса надо ещё добавить что-нибудь связанное со статусами, чтобы не выбирать каждый раз абсолютно все совпадающие записи, а выбрать только с нужным статусом и совпадением по коду посылки.
Re: Нужна помощь с получением ID записи
Добавлено: 14 мар 2024, 20:06
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);
}
В условие основного запроса надо ещё добавить что-нибудь связанное со статусами, чтобы не выбирать каждый раз абсолютно все совпадающие записи, а выбрать только с нужным статусом и совпадением по коду посылки.
Большое вам человеческое спасибо. Теперь все работает как я хотел.
Re: Нужна помощь с получением ID записи
Добавлено: 15 мар 2024, 19:32
Parazit00
Можно еще 1 вопрос а можно ли использовать "Поле для текста"
С вот такими данными?

- Screenshot_15.png (2.77 КБ) 2129 просмотров
И каждую строку проверить и изменить ей статус ?
Если возможно, и вас это не затруднит, можно готовое решение.
Re: Нужна помощь с получением ID записи
Добавлено: 15 мар 2024, 21:09
tehnos
Опять ничего не понятно. Какое поле... какой строке изменить статус... Ну или может я тупой. Вот Вам наводка, а дальше думайте алгоритм сравнений.
Для превращения текста из поля ($text) в массив значений ($text_arr) с разделением по пробелу или по переносу строки используйте:
Код: Выделить всё
$text_arr = preg_split("/\s+/", $text, 0, PREG_SPLIT_NO_EMPTY);