Avatar billede Slettet bruger
16. maj 2003 - 02:37 Der er 2 kommentarer og
1 løsning

Optimer query

SELECT DISTINCT u.user_id, CONCAT(fname, ' ', lname) AS full_name
        FROM user AS u
        LEFT JOIN participates AS p
        ON
            p.user_id = u.user_id
            AND
            status != 'STATUS_REJECTED'
        LEFT JOIN appointment AS a
        ON
            p.appointment_id = a.appointment_id
            AND
            ((a.start_time >= '$start_time' AND a.start_time < '$end_time') OR (a.end_time >= '$start_time' AND a.end_time < '$end_time') OR (a.start_time < '$start_time' AND a.end_time > '$end_time'))
            AND
            a.cancelled_time IS NULL
        LEFT JOIN appointment AS ap
        ON
            ap.user_id = u.user_id
            AND
            ((ap.start_time >= '$start_time' AND ap.start_time < '$end_time') OR (ap.end_time >= '$start_time' AND ap.end_time < '$end_time') OR (ap.start_time < '$start_time' AND ap.end_time > '$end_time'))
            AND
            ap.cancelled_time IS NULL
        WHERE
            a.appointment_id IS NULL AND ap.user_id IS NULL   

----------------

Jeg har på fornemmelsen man kan slippe for den sidste LEFT JOIN (LEFT JOIN appointment AS ap).

Er der nogle der kan lure hvordan? Sådan at forspørgslen naturligvis gør det samme som nu.
Avatar billede Slettet bruger
16. maj 2003 - 02:43 #1
"gør det samme som nu" = "retunerer det samme som nu"
Avatar billede Slettet bruger
16. maj 2003 - 17:12 #2
Alt peger i retning af at sidste join ikke kan undværes. Idet en bruger, hvis han ejer en aftale kun optræder i appointments user_id. Og hvis han deltager i en aftale kun optræder i participates user_id. Og jeg skal jo bruge begge resultater.
Avatar billede Slettet bruger
17. maj 2003 - 16:03 #3
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester