从商店软件中获取序列号数据的复杂SQL查询



大家早上好,几天前,我在服务器上安装了一个shopware 5实例。Shopware有一个功能,可以销售ESD产品,并为每次购买分配一个唯一的序列号,我现在需要从外部程序进行验证。可悲的是,商店软件将所有东西都拆分成多个表,这让人很难理解。

我所拥有的:-用户电子邮件地址-用户许可

我想要什么:获得许可的产品的名称,发送到具有给定许可的电子邮件地址。文章序列号作为"serialnumber"存储在"a\uarticles_esd_serials"中。文章名称以"name"的形式存储在"s_articles"中。

我已经尝试过:我试图创建一个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": "example@example.com",
"licence": "ABCDEFGH"
}

预期输出:

{[
"mail": "example@example.com",
"licence": "ABCDEFGH",
"product": "Awesome product name" //THIS WOULD BE NULL IF NOTHING FOUND
]}

也许有人能帮我实现这一点吗?那就太好了,因为我的脑袋被挡住了。

问候!

我能够使用多个子查询来帮助自己。

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 = 'example@example.com')))

最新更新