Сложный SQL-запрос для получения данных о серийном номере из программного обеспечения магазина

Всем доброе утро, несколько дней назад я установил экземпляр shopware 5 на свой сервер, чтобы возиться с ним. В Shopware есть функция продажи продуктов ESD и присвоения уникального серийного номера каждой покупке, которую мне теперь нужно проверить с помощью внешней программы. К сожалению, программное обеспечение магазина разбивает все на несколько таблиц, что делает его довольно трудным для понимания.

Что у меня есть: - Адрес электронной почты пользователя - Пользовательская лицензия

Что я хочу: название продукта, который лицензируется на адрес электронной почты с данной лицензией. Серийный номер статьи сохраняется в «a_articles_esd_serials» как «серийный номер». Название статьи сохраняется в "s_articles" как "name".

Что я уже пробовал: я пытался создать SQL-запрос, чтобы получить серийные номера, соответствующие продукту. Лишь бы создать себе базу. Но это уже терпит неудачу с «s_articles.id не определено», что невозможно, поскольку оно определенно существует и, конечно же, устанавливается в автозаполнении в phpmyadmin.

SELECT arts.name
FROM s_articles arts
JOIN s_articles_esd arts_esd ON arts_esd.articleID = s_articles.id
JOIN s_order_esd order_esd ON order_esd.esdID = arts_esd.id
JOIN s_articles_esd_serials serials ON serials.esdID = order_esd.esdID

Информация о таблицах: я сделал это дизайнерское представление, чтобы вы понимали, как выглядят таблицы.

Дизайнерское представление данных таблиц

Как уже было сказано, магазинная утварь разделяет несколько вещей.

Вход:

{
"mail": "[email protected]",
"licence": "ABCDEFGH"
}

Ожидаемый результат:

{[
"mail": "[email protected]",
"licence": "ABCDEFGH",
"product": "Awesome product name" //THIS WOULD BE NULL IF NOTHING FOUND
]}

Может ли кто-нибудь, вероятно, помочь мне достичь этого? Было бы неплохо, так как я как-то заблокирован в голове rn.

Приветствую!


person m3_    schedule 07.04.2020    source источник
comment
Вы присвоили своей таблице корреляционное имя: FROM s_articles arts, поэтому вы должны использовать это имя при обращении к ее столбцам.   -  person mustaccio    schedule 07.04.2020
comment
@mustaccio Как я мог .. неважно, спасибо! Я смог скорректировать свой запрос с помощью вашего комментария. Но сейчас я столкнулся с другой проблемой. Вы не против ответить на этот вопрос, чтобы я мог ответить прямо, без комментариев (ограничение на количество символов)?   -  person m3_    schedule 07.04.2020
comment
вы всегда можете отредактировать свой вопрос, чтобы добавить/удалить информацию и/или ответить на него самостоятельно   -  person mustaccio    schedule 07.04.2020


Ответы (1)


Я смог помочь себе, используя несколько подзапросов.

SELECT arts.name FROM s_articles arts WHERE arts.id = (SELECT arts_esd.articleID FROM s_articles_esd arts_esd WHERE arts_esd.id = (SELECT oesd.esdID FROM s_order_esd oesd WHERE oesd.serialID = (SELECT serials.id FROM s_articles_esd_serials serials WHERE serials.serialnumber = "ABCDEFGH") AND oesd.userID = (SELECT usr.id FROM s_user usr WHERE email = '[email protected]')))
person m3_    schedule 07.04.2020