У меня есть БД с этого макета ...Как найти записи, используя только определенные строки в объединенной таблице?
contracts
---------
id
name
description
# Etc...
locations
---------
id
contract_id # FK to contracts.id
name
order_position
# Etc...
Мне нужно найти по контрактам с name
их текущего местоположения (и от других contracts
столбцов одновременно).
Текущее местонахождение с наибольшим order_position
.
Другими словами, я пытаюсь написать запрос, который будет возвращать строки из contracts
на основе location.name
.
Обычно это простое соединение через location.contract_id
и contracts.id
.
Например, это будет простой случай, без дополнительного требования ...
SELECT c.*
FROM contracts c, locations l
WHERE
c.id = l.contract_id
AND
c.name LIKE '%bay%'
AND
l.name LIKE '%admin%';
Но дополнительное требование заключается в том, что я хочу, чтобы сократить его до места расположения контракта, который имеет наибольшее значение для order_position
.
Есть ли способ сделать это с помощью одного запроса?
Можете ли вы добавить пример данных и ожидаемый результат? –
Структура таблицы? Индексы? Двигатель базы данных? Объяснить план? Количества данных? Индексность? – symcbean