2016-11-27 3 views
0

У меня есть 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 мест).

+0

Другое соединение - ответ на ваш вопрос. Если для выполнения запроса требуется много времени, добавьте соответствующие индексы. – Shadow

+0

Я думал больше о чем-то вроде 'SELECT DISTINCT (d.location_id)' и присоединяюсь в округах только для этих мест ... Но я не могу взять это в руки ... – Szekelygobe

+0

Вы имеете в виду 'l.name like '% Foo%' '? Я не вижу столбец 'name' в таблице документов. – CGritton

ответ

0

выберите * от страны, где COUNTRY_ID в ( ВЫБОР COUNTRY_ID

из документа г внутреннее соединение местоположения л на d.location_id = l.location_id ГДЕ d.document_type = 1 И d.title LIKE «% Foo % ')

 Смежные вопросы

  • Нет связанных вопросов^_^