Join с одной таблицей
Добавлено: 04 дек 2008, 17:18
Доброго времени суток!
Наткнулся на такую проблему. Есть таблица Table1, в ней два поля field1 и field2. Задача заключается в следующем : по значению поля field2 выбрать из этой таблицы все значения поля field2, у которые связаны с заданным по полю field1, то есть:
Table 1
Field1 Field2
1 2
1 3
1 5
2 3
2 7
3 2
3 5
то есть данный запрос для значения 2 должен получить выборку (2;3;5), для 3 - (2;3;5;7) и т. д.
Конечно, самый простой вариант :
select distinct field2 from Table1 where Field1 in (select distinct field1 from Table1 where Field2=2)
но по скорости вариант не супер.
Я решил сделать join:
select distinct Field2 from Table1 a
left join Table1 b on a.field1=b.field1
where b.field2 = 2
в результате получаю только одну запись с 2.
Насколько мне позволяет делать выводы моя грамотность, запрос вроде правильный. Но видимо с одной таблицей так поступать нельзя? Я прав?
Наткнулся на такую проблему. Есть таблица Table1, в ней два поля field1 и field2. Задача заключается в следующем : по значению поля field2 выбрать из этой таблицы все значения поля field2, у которые связаны с заданным по полю field1, то есть:
Table 1
Field1 Field2
1 2
1 3
1 5
2 3
2 7
3 2
3 5
то есть данный запрос для значения 2 должен получить выборку (2;3;5), для 3 - (2;3;5;7) и т. д.
Конечно, самый простой вариант :
select distinct field2 from Table1 where Field1 in (select distinct field1 from Table1 where Field2=2)
но по скорости вариант не супер.
Я решил сделать join:
select distinct Field2 from Table1 a
left join Table1 b on a.field1=b.field1
where b.field2 = 2
в результате получаю только одну запись с 2.
Насколько мне позволяет делать выводы моя грамотность, запрос вроде правильный. Но видимо с одной таблицей так поступать нельзя? Я прав?