我有两个表Orders表和customers表,都有customerid作为公共字段,
客户表包含名字,姓氏,电话和电子邮件地址字段。
现在,如果我必须根据客户名字和/或姓氏和/或电话和/或电子邮件和/或orderid搜索/选择订单,那么连接查询的mysql格式应该是什么?
与上述相关的其他问题
我必须使用单个文本框来按订单ID或名字或姓氏或电话或电子邮件地址进行搜索,如果您有想法,我如何识别与所需字段相关的输入值让它发生,引导我......
答案 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%"