majklas wrote:buvau pamiršęs panaudoti tą pačią lentutę du kartus vienoje užklausoje skirtingose aliasuose :)
Na aš turėjau omenyje ne tos pačios lentos panaudojimą du kartus, bet apie visiškai unikalių užklausų (query) panaudojimą.
Pvz.:
SELECT *
FROM (
SELECT laukas1,laukas2
FROM lenta
) AS lenta_1 LEFT JOIN (
SELECT laukas1,laukas2
FROM lenta
) AS lenta_2 ON lenta_1.laukas1 = lenta_2.laukas1
WHERE lenta_2.laukas1 IS NULL
Ar galima paskui supaprastinti viską ir apsieti be tokių sub-užklausų - negaliu iš anksto atsakyti, reikia žiūrėti konkrečiai į galutinę užklausą. Jeigu išeina supaprastinti tai taip ir reikėtų daryti, nes išvengus sub-užklausų padidėtų SQL užklausos vykdymo greitis.
majklas wrote:Kaip turi būti antroji užklausa? Ką ji turėtų parinkti? Tik tą laiko intervalą?
ON bus s1.uzsakymo_nr=s2.uzsakymo_nr
Antroji užklausa turi grąžinti įrašus (iš principo užtenka tik įrašo ID), kurių klientai, norimuose laiko rėžiuose padarė po antrą užsąkymą. čia užsąkymų lentą reikia JOIN'inti pačią su savimi, kur būtų jungiama pagal tai, kad atitinka tas pats klientas ir pirmos lentos užsąkymo laikas patenka į antros lentros užsakymo laiko rėžį (+-2h), bet užsąkymo ID skiriasi. čia rašau tik teoriškai, bet +-tokia logika. Gali būti, kad širos visos užklausos sujungimui su aukščiau minėta pirma užklausa bus reikalinga daugiau duomenų (stulpelių).
majklas wrote:P.S. spėju LEFT JOIN (select2) turėjo būti, taip?
Taip, pataisiau.