Mysql 三个表的联接查询!!对于下面给定的条件

Mysql 三个表的联接查询!!对于下面给定的条件,mysql,join,Mysql,Join,我有三个表Orders table和customers table以及ORDERSTABLE status table,order和customer table都将customerid作为公共字段,order和orderstatus将order\U status\U id作为公共字段 customer表有firstname、lastname、phone和email地址字段 现在,如果我必须根据customer firstname和/或lastname和/或phone和/或email和/或orde

我有三个表Orders table和customers table以及ORDERSTABLE status table,order和customer table都将customerid作为公共字段,order和orderstatus将order\U status\U id作为公共字段

customer表有firstname、lastname、phone和email地址字段


现在,如果我必须根据customer firstname和/或lastname和/或phone和/或email和/或orderid搜索/选择订单,那么join query的mysql格式应该是什么,以便我可以组合所有三个表,从orders表和orderstatus表获得orderstatus结果

好吧,我将从左键开始,将所有三个表连接在一起,开始

然后,;构造where子句,使每个参数基本上都有这样一行;仅在提供参数的情况下应用过滤器

WHERE 
(@customerFirstName IS NULL OR @customerFirstName = customers.FirstName)
AND (@customerLastName IS NULL OR @customerLastName = customers.LastName)
etc...
取决于您期望的记录数;或者如果缺乏绩效;您可能需要考虑创建一个表变量来保存较小的数据子集。i、 e.创建客户表;然后只插入符合客户搜索条件的客户。然后将其连接到其他两个表中


如果我误解了你的问题,请告诉我;或者,如果您需要任何澄清的话。

好吧,我将从左图开始,将所有三个表连接在一起

然后,;构造where子句,使每个参数基本上都有这样一行;仅在提供参数的情况下应用过滤器

WHERE 
(@customerFirstName IS NULL OR @customerFirstName = customers.FirstName)
AND (@customerLastName IS NULL OR @customerLastName = customers.LastName)
etc...
取决于您期望的记录数;或者如果缺乏绩效;您可能需要考虑创建一个表变量来保存较小的数据子集。i、 e.创建客户表;然后只插入符合客户搜索条件的客户。然后将其连接到其他两个表中

如果我误解了你的问题,请告诉我;或者,如果您需要任何澄清。

类似于:

SELECT `orders`.* , 
 `orderstatus`.`description`,
 `customers`.`firstname`, `customers`.`lastname`, `customers`.`phone`,`customers`.`email`
FROM `orders`
LEFT JOIN `customers` ON `customers`.`id`=`orders`.`customerid`
LEFT JOIN `orderstatus` ON `orderstatus`.`orderid`=`orders`.`id`
WHERE `customers`.`lastname`='blogs'
我不确定您的订单状态表。

类似于:

SELECT `orders`.* , 
 `orderstatus`.`description`,
 `customers`.`firstname`, `customers`.`lastname`, `customers`.`phone`,`customers`.`email`
FROM `orders`
LEFT JOIN `customers` ON `customers`.`id`=`orders`.`customerid`
LEFT JOIN `orderstatus` ON `orderstatus`.`orderid`=`orders`.`id`
WHERE `customers`.`lastname`='blogs'

我不确定您的orderstatus表。

您可以加入这些表。根据您当前的数据定义,不需要外部联接或任何东西

SELECT * 
FROM Orders o, customers c, orderstatus s
WHERE o.customerid = c.customerid
AND o.order_status_id = s.order_status_id
AND c.firstname = 'OM'
AND c.LASTNAME = 'The Eternity'
AND o.orderid = 752
AND ...

你可以加入表格。根据您当前的数据定义,不需要外部联接或任何东西

SELECT * 
FROM Orders o, customers c, orderstatus s
WHERE o.customerid = c.customerid
AND o.order_status_id = s.order_status_id
AND c.firstname = 'OM'
AND c.LASTNAME = 'The Eternity'
AND o.orderid = 752
AND ...

你的问题让我兴奋不已-你看这叫做营销/广告/活动我点击标题只是想看看有没有什么超级有趣的小丑?马戏团在这里。我猜不会。为此,你必须去meta.stackoverflow.com,让他们在编辑器中提供新功能,这样我们就可以放一些你最喜欢的小丑了?马戏团?还是不起作用。。根据解决方案,因此我最好考虑删除它,因为这可能会导致您的负面标记。您的问题让我非常兴奋-你看这叫做营销/广告/活动我点击标题只是想看看有没有什么超级有趣的小丑?马戏团在这里。我猜不会。为此,你必须去meta.stackoverflow.com,让他们在编辑器中提供新功能,这样我们就可以放一些你最喜欢的小丑了?马戏团?还是不起作用。。根据解决方案,我最好删除它,因为这可能会导致您的负面标记是的,我确实需要您通过我的问题理解的内容?根据以上给定的条件,我需要订单表中的数据和订单状态表中的订单状态HMM;我不知道我是否明白;但是如果你把三张桌子连在一起;您可以在select子句中包含订单表和订单状态表中的数据。是的,我确实需要您通过我的问题了解的内容?根据以上给定的条件,我需要订单表中的数据和订单状态表中的订单状态HMM;我不知道我是否明白;但是如果你把三张桌子连在一起;您可以在select子句中包含订单表和订单状态表中的数据。