gpt4 book ai didi

php - 检查一个表列中的值以查找其相关表的信息

转载 作者:行者123 更新时间:2023-11-29 07:50:00 25 4
gpt4 key购买 nike

说我只有三张 table 。 Order_List、Delivery_Order 和 InfiStall_Order:

Order_List是我们目前收到的所有订单的表格,包括但不限于:产品的代码('id_cart')、客户姓名('客户')、使用的付款方式('付款')以及获取产品的方式('方法') >)。

<小时/>
 ------------------------------------------------------
id_cart customer payment method
------------------------------------------------------
0001 Klaudia creditcard Infistall
0002 Klaudia paypal Delivery
0003 MyFather Transfer Delivery
0004 MyMother Transfer Infistall
-------------------------------------------------------

获取产品的方式分为两种方式:“Delivery”和“InfiStall”:

送货是客户希望将产品送到某个地址的地方,而 InfiStall 是客户希望通过到我们列出的商店提货来获得产品的地方。

因为 Delivery 和 InfiStall 都会有特定的附加信息,例如位置、城市或国家/地区,因此它们必须有自己的表。如下:

假设这是交货表Delivery_Order

  ------------------------------------------------------
id_cart location address status
------------------------------------------------------
0003 Asia Japan Delivered
0004 Africa Maroko Delivered
-------------------------------------------------------

并说这是Infistall的表InfiStall_Order

 ------------------------------------------------------
id_cart location address status
------------------------------------------------------
0001 Pluto Nowhere Picked-up
0002 Markurius Showhere Waiting
-------------------------------------------------------

所有表都有名为 id_cart 的列。这就是为什么,首先,我想根据 id_card 选择所有信息。

我想要的是,

当客户登录他的帐户(假设用户名为 Klaudia)时,她将看到他们的订单历史记录,他们将看到如下所示:

 -----------------------------------------------------------------------
id_cart products quantity invoices status
-----------------------------------------------------------------------
this 2 $20 Picked
0001 that 1 $20 (See Detail)
those 2 $20
-----------------------------------------------------------------------
this 2 $20 Delivered
0002 that 1 $20 (See Detail)
those 2 $20
-----------------------------------------------------------------------

然后,当Klaudia点击See Detail链接时,它将显示来自deliver_order/infistall_order的信息

最佳答案

您必须专门选择每个项目,因为某些列会不明确(在表中具有相同的名称。

SELECT
o.id_cart AS id,
d.location AS deliverLocation,
i.location AS infiLocation,
... etc
FROM Order_List o
LEFT JOIN Delivery_Order d
ON o.id_cart = d.id_cart
LEFT JOIN InfiStall_Order i
ON o.id_cart = i.id_cart
WHERE o.customer = 'Klaudia'

如果 Delivery_Order 或 InfiStall_Order 表可能不包含任何行,则必须使用 LEFT JOIN 而不是 JOIN

编辑:现在使用 LEFT JOIN 显示

编辑2:

如果数据仅预计位于表 Delivery_Order 或 InfiStall_Order 中,则使用 CASE 对其进行评估:

SELECT
*,
CASE
WHEN d.id_cart IS NOT NULL THEN 1
ELSE 0
END AS isInDeliver
FROM Order_List o
LEFT JOIN Delivery_Order d
ON o.id_cart = d.id_cart
LEFT JOIN InfiStall_Order i
ON o.id_cart = i.id_cart
WHERE o.customer = 'Klaudia'

关于php - 检查一个表列中的值以查找其相关表的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26730604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com