2013-12-04 5 views
0

Прошло много времени с тех пор, как я в последний раз что-то делал с базой данных, чтобы мои знания были ржавы. У меня есть 2 SQL таблицы:Необходим более эффективный запрос соединения

data(id, attr); 
dependency(child, parent); 
#**child** and **parent** are the id from table **data** 

мне нужно запросить все атр соответствующих записей в таблице зависимость. Ниже приводится моя попытка:

SELECT 
(SELECT data.attr FROM data WHERE data.id = child) AS child_attr, 
(SELECT data.attr FROM data WHERE data.id = parent) AS parent_attr 
from dependency; 

Это работает, но очень медленно. Я уверен, что есть лучший способ сделать это с помощью запроса на соединение, но пока не придумал. Может кто-нибудь помочь?

Спасибо,

ответ

1

Вы можете присоединиться к dependency таблицу в data таблице дважды, чтобы получить информацию, что вам нужно:

SELECT d1.attr AS ChildAttr, d2.attr AS ParentAttr 
FROM dependency AS dep 
INNER JOIN data AS d1 ON dep.child = d1.id 
INNER JOIN data AS d2 ON dep.parent = d2.id 
+0

спасибо, Linger. Он работает быстрее. – chepukha

1

попробовать это:

SELECT t2.attr, t3.attr 
FROM dependency as t1 
    INNER JOIN data as t2 on t1.child = t2.id 
    INNER JOIN data as t3 on t1.parent = t3.id 
+0

+1 Я думаю, что ваше решение по существу такое же, как Linger. Но большое спасибо. – chepukha

+0

Да - Лингер, видимо, разместил его, пока я отправлял мой. –

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