Каким может быть запрос соединения для условия, указанного ниже? - PullRequest
1 голос
/ 24 июня 2010

У меня есть две таблицы Таблица заказов и таблица клиентов, оба имеют обычное поле как обычное поле,

таблица клиента имеет поля имени, фамилии, телефона и адреса электронной почты.

Теперь, если мне нужно искать / выбирать заказы по имени и / или фамилии клиента, и / или телефону, и / или электронной почте, и / или номеру заказа, то каким должен быть формат запроса на присоединение mysql?

Дополнительный вопрос, связанный с выше

Мне нужно использовать одно текстовое поле для поиска по идентификатору заказа, имени, фамилии, телефону или адресу электронной почты, как я могу определить входное значение, связанное с необходимыми полями, если у вас есть идея Сделай это, пожалуйста, направь меня ...

Ответы [ 3 ]

0 голосов
/ 24 июня 2010

Примерно так:

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

Это дает вам список заказов, но вы можете отфильтровать его по полям в таблице «Клиенты» (изменив соответствующее предложение where).

Чтобы ответить на второй вопрос, вы не можете указать, в каком поле пользователь хочет выполнить поиск, поэтому вам придется искать во всех возможных полях. Создайте предложение where следующим образом:

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

Где input - это то, что было напечатано в текстовом поле.

Будьте осторожны, чтобы очистить входную строку. Вы должны использовать параметры, если можете, или хотя бы заменить ' на ''.

Вы не хотите, чтобы пользователь мог вводить '; drop table customers; -- и интерпретировать его как код SQL, а не как строку.

0 голосов
/ 24 июня 2010
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%"
0 голосов
/ 24 июня 2010
SELECT * FROM orders JOIN customers ON customers.customer_id=orders.customer_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...