У меня есть 3 таблицы в db.Правильный оператор mysql для привязки countys к единственным местоположениям с документом
1 место (LOCATION_ID, county_id, имя)
2 округа (county_id, имя)
3 документа (document_id, document_type, LOCATION_ID, название, текст)
SQL-оператор У меня есть :
SELECT d.document_id, d.title, l.name AS location_name
FROM document d
INNER JOIN location l ON d.location_id=l.location_id
WHERE d.document_type = 1 AND d.title LIKE '%foo%'
Мне нужен документ title and id
, расположение name and location_id
и графство name and county_id
для возврата.
Вопрос в том, как я могу выбрать имена графств и county_id только для местоположений, которые у меня есть в этом результате, а не для всех мест в таблице местоположений.
Если я сделаю еще один INNER JOIN county c ON l.county_id=c.county_id
, тогда запрос займет много времени, с добавлением округов для всех местоположений (в таблице указано 13 000 мест).
Другое соединение - ответ на ваш вопрос. Если для выполнения запроса требуется много времени, добавьте соответствующие индексы. – Shadow
Я думал больше о чем-то вроде 'SELECT DISTINCT (d.location_id)' и присоединяюсь в округах только для этих мест ... Но я не могу взять это в руки ... – Szekelygobe
Вы имеете в виду 'l.name like '% Foo%' '? Я не вижу столбец 'name' в таблице документов. – CGritton