Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
ВнизПомогите правильно составить запрос Найти похожие ветки
← →
Fynjy1984 © (2007-04-17 14:22) [0]Нужно найти все записи в таблице, где поля 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 14:23) [1]База SQL Server 2000
← →
Johnmen © (2007-04-17 14:55) [2]Не хватает
or (epi1.pi_sprut2=epi2.pi_sprut1)
← →
Fynjy1984 © (2007-04-17 15:24) [3]да, но это ничего не меняет
прийдется на 3 запроса разбивать - в принципе меня это устраивает
← →
Johnmen © (2007-04-17 15:40) [4]
> прийдется на 3 запроса разбивать
на 4
и все их в UNION
← →
Fynjy1984 © (2007-04-17 15:50) [5]все-таки 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)
З.Ы. за юнион спасибо, а то я забыл про его существование
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.043 c