Avatar billede Droa Seniormester
19. oktober 2010 - 10:36 Der er 5 kommentarer og
1 løsning

Checke om felt findes i en left outer join select

Jeg har 2 tabeller.

moduler
og
moduler_aktive

det er sådan at moduler indeholder en liste med moduler, hvor moduler_aktive, er en samling af bruger, med hvad for moduler de har aktive.

nu er det sådan at vis en bruger skal have spærret for adgang til et modul, så det slet ikke kommer frem på listen, kan man i moduler_aktive sætte feltet "moduler_aktive.isBlocked" til "yes"..

Jeg har så prøvet og lave listen ud fra den regl


SELECT moduler.*, moduler_aktive.isActive, moduler_aktive.isRequested,moduler_aktive.isBlocked FROM moduler
                    left outer join moduler
                    ON (
                    moduler.id = moduler_aktive.module_id
                    AND
                    moduler_aktive.idUser = 'test')
                    WHERE
                    (
                        (
                        moduler_aktive.isBlocked = 'no'
                        )
                    )
                    order by a_id asc";


men vis der så ikke er et felt til den individuelle bruger / modul, vis den jo ikke lave det felt, og ikke have nogen værdi..

kan man gøre sådan at vis feltet ikke findes, at den så ikke filtrere den fra?

det er kun vis moduler_aktive.isBlocked = 'yes' den ikke skal have den med..
19. oktober 2010 - 12:21 #1
Jeg er ikke sikker paa om jeg har forstaaet dig korrekt.  Vil du have en liste over alle bestaaende moduler undtagen de som 'test' er medlem af og er blevet blokkeret fra?  Altsaa moduler som 'test' ikke er medlem af, inklusive moduler som ingen endnu er medlem af?  I saa fald skulle en query som denne virke:

SELECT moduler.*, moduler_aktive.isActive, ....
FROM moduler LEFT JOIN moduler_active ON moduler.id = moduler_aktive.module_id WHERE moduler_aktive.module_id NOT IN (SELECT module_id FROM module_aktive WHERE idUser = 'test' AND isBlocket = 'yes') OR idUSER IS NULL

Saa fortael mig om jeg har forstaaet dit behov korrekt og om du faar et tilfredsstillende resultat med denne query.
Avatar billede Droa Seniormester
19. oktober 2010 - 14:11 #2
det var mere den her jeg ledte efter :)


SELECT moduler.*, moduler_aktive.isActive, moduler_aktive.isRequested,moduler_aktive.isBlocked FROM moduler
                    left outer join moduler
                    ON (
                    moduler.id = moduler_aktive.module_id
                    AND
                    moduler_aktive.idUser = 'test')
                    WHERE
                    (
                        (
                        moduler_aktive.isBlocked = 'no'
                        or
                        moduler_aktive.isBlocked is nul

                        )
                    )
                    order by a_id asc";
Avatar billede Droa Seniormester
19. oktober 2010 - 14:12 #3

SELECT moduler.*, moduler_aktive.isActive, moduler_aktive.isRequested,moduler_aktive.isBlocked FROM moduler
                    left outer join moduler
                    ON (
                    moduler.id = moduler_aktive.module_id
                    AND
                    moduler_aktive.idUser = 'test')
                    WHERE
                    (
                        (
                        moduler_aktive.isBlocked = 'no'
                        or
                        moduler_aktive.isBlocked is null

                        )
                    )
                    order by a_id asc";
19. oktober 2010 - 18:19 #4
Jeg er maaske lidt tumpet idag - siger du at det output du faar fra queryen i #2/#3 er det resultat du oensker?  Saaledes at spoergsmaalet er besvaret?  Eller er der stadig et problem?  I saa fald hvad er forskellen paa det output du faar og det output du gerne vil have?
Avatar billede Droa Seniormester
20. oktober 2010 - 11:00 #5
nej det var et svar fra mig selv.. det var fordi jeg prøvede med

var = null som SQL query ikke rigtigt godtager
men
var is null siger SQL go for.. vis feltet ikke findes.

det var bare mig der lige skulle tænke mig om, inden jeg spørger om spørgsmål, jeg allerede kender svaret til... du må stadig godt få pointene, da du gav mig hintet, til at jeg kunne rette SQL'en
20. oktober 2010 - 12:36 #6
Ok, saa svar fra mig.
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