下面给出的条件的连接查询可能是什么?

时间:2010-06-24 11:21:08

标签: mysql join

我有两个表Orders表和customers表,都有customerid作为公共字段,

客户表包含名字,姓氏,电话和电子邮件地址字段。

现在,如果我必须根据客户名字和/或姓氏和/或电话和/或电子邮件和/或orderid搜索/选择订单,那么连接查询的mysql格式应该是什么?

  

与上述相关的其他问题

我必须使用单个文本框来按订单ID或名字或姓氏或电话或电子邮件地址进行搜索,如果您有想法,我如何识别与所需字段相关的输入值让它发生,引导我......

3 个答案:

答案 0 :(得分:0)

SELECT * FROM orders JOIN customers ON customers.customer_id=orders.customer_id;

答案 1 :(得分:0)

这样的事情:

select orders.* 
from orders 
join customers on customers.customerid=orders.customerid
where customers.firstname = 'John' -- or whatever

这为您提供了订单列表,但您可以根据Customers表中的字段对其进行过滤(通过适当更改where子句)。

要解决第二个问题,您无法分辨用户想要搜索的字段,因此您必须搜索所有可能的字段。建立一个像这样的where子句:

where (customers.firstname like '%input%')
   or (customers.lastname like '%input%')
   or (orders.id = 'input')
   or (.. etc)

input在文本框中键入的内容。

请注意清理输入字符串。如果可以,您应该使用参数,或者至少将'替换为''

您不希望用户能够输入'; drop table customers; --并将其解释为SQL代码而不是字符串。

答案 2 :(得分:0)

SELECT * FROM customers AS c INNER JOIN order AS o ON c.customerid=o.customerid

订购:

SELECT * FROM customers AS c INNER JOIN order AS o ON c.customerid=o.customerid ORDER BY c.lastname DESC

要搜索:

SELECT * FROM customers AS c INNER JOIN order AS o ON c.customerid=o.customerid WHERE c.lastname LIKE "%brown%"