![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите правильно составить запрос [D7, XP]
Fynjy1984 © (2007-04-17 14:22:00)Нужно найти все записи в таблице, где поля sprut1 повторяются или где повторяются поля sprut2 или где sprut1=sprut2.
Составил такой запрос. На небольшом количестве записей летает шустро, а при количестве совпадений ~1000 из 10000 записей все виснет намертво
SELECT epi1.pi_id, epi2.pi_id, epi1.pi_sprut1, epi2.pi_sprut1, epi1.pi_sprut2, epi2.pi_sprut2
FROM Elem_Pr_izm epi1, Elem_Pr_izm epi2
WHERE (epi1.pi_id <> epi2.pi_id) and ((epi1.pi_sprut1=epi2.pi_sprut1) or (epi1.pi_sprut1=epi1.pi_sprut2) or (epi1.pi_sprut2=epi2.pi_sprut2));
Если разбить этот запрос на 3 таких
SELECT epi1.pi_id, epi2.pi_id, epi1.pi_sprut1, epi2.pi_sprut1, epi1.pi_sprut2, epi2.pi_sprut2
FROM Elem_Pr_izm epi1, Elem_Pr_izm epi2
WHERE (epi1.pi_id <> epi2.pi_id) and (epi1.pi_sprut1=epi2.pi_sprut1)
то все бегает шустро.
Fynjy1984 (2007-04-17 15:50:00) [1]все-таки 3-х наверно хватит ... я же таблицу саму с собой объединяю
вот такие вроде запросы получились
SELECT epi1.pi_id, epi2.pi_id, epi1.pi_sprut1, epi2.pi_sprut1, epi1.pi_sprut2, epi2.pi_sprut2
FROM Elem_Pr_izm epi1, Elem_Pr_izm epi2
WHERE (epi1.pi_id <> epi2.pi_id) and (epi1.pi_sprut1=epi2.pi_sprut1)
SELECT epi1.pi_id, epi2.pi_id, epi1.pi_sprut1, epi2.pi_sprut1, epi1.pi_sprut2, epi2.pi_sprut2
FROM Elem_Pr_izm epi1, Elem_Pr_izm epi2
WHERE (epi1.pi_sprut2<>NULL)and(epi1.pi_id <> epi2.pi_id) and (epi1.pi_sprut2=epi2.pi_sprut2)
sprut2 пустые бывают поэтому добавил
SELECT epi1.pi_id, epi2.pi_id, epi1.pi_sprut1, epi2.pi_sprut1, epi1.pi_sprut2, epi2.pi_sprut2
FROM Elem_Pr_izm epi1, Elem_Pr_izm epi2
WHERE (epi1.pi_sprut1=epi2.pi_sprut2)
З.Ы. за юнион спасибо, а то я забыл про его существование
Johnmen (2007-04-17 15:40:00) [2]
> прийдется на 3 запроса разбивать
на 4
и все их в UNION
Fynjy1984 (2007-04-17 15:24:00) [3]да, но это ничего не меняет
прийдется на 3 запроса разбивать - в принципе меня это устраивает
Johnmen (2007-04-17 14:55:00) [4]Не хватает
or (epi1.pi_sprut2=epi2.pi_sprut1)
Fynjy1984 (2007-04-17 14:23:00) [5]База SQL Server 2000