Примерно так:
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, а не как строку.