Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

Помогите правильно составить запрос   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
2-1176534489
Dush
2007-04-14 11:08
2007.05.06
проблемы с IF


15-1175963150
Василий Кузнецов
2007-04-07 20:25
2007.05.06
Java


15-1175875277
Суслик
2007-04-06 20:01
2007.05.06
Как написать адрес в России на английском?


2-1176743081
..::KraN::..
2007-04-16 21:04
2007.05.06
Закрытие TOpenDialog


15-1175870706
Pazitron_Brain
2007-04-06 18:45
2007.05.06
Кто-нибудь паял самодельный блок питания для ноутбука?