Avatar billede tos Praktikant
23. august 2011 - 22:14 Der er 4 kommentarer og
1 løsning

Opslag i mange tabeller

Vi er nogle stykker der arbejder på et open source projekt (cms) og vi er kørt lidt fast i en SQL statement og mangler lidt hjælp.
Hovedtabellen "kaboozu_pages" indeholder oplysninger om en side.
"kaboozu_categories" indeholder kategorier (fx mad, drikke), hvor hver har en id.
"kaboozu_page_tags" indeholder tags (fx fisk, æg, saftevand), hvor hver har en id.
"lookup" tabllerne indholder id'er fra kategorier og tags samt id på siden.
Hvordan får vi resultat der IKKE er tomt, selvom der fx ikke er en record i tags?

  SELECT DISTINCT p.*, GROUP_CONCAT(DISTINCT lcp.id) categories, GROUP_CONCAT(DISTINCT lup.id) permissions, GROUP_CONCAT(DISTINCT ltp.id) tags
            FROM kaboozu_pages p
            INNER JOIN kaboozu_page_lookup_permission lp ON lp.pageid=p.id
            INNER JOIN kaboozu_page_lookup_categories lc ON lc.pageid=p.id
            INNER JOIN kaboozu_page_lookup_tags lt ON lt.pageid=p.id
            INNER JOIN kaboozu_userpermissions lup ON lp.permissionid=lup.id
            INNER JOIN kaboozu_categories lcp ON lc.categorieid=lcp.id
            INNER JOIN kaboozu_page_tags ltp ON lt.tagid=ltp.id
            WHERE p.id=11
            GROUP BY p.menutitle
Avatar billede arne_v Ekspert
23. august 2011 - 22:15 #1
LEFT JOIN fremfor INNER JOIN ??
Avatar billede tos Praktikant
23. august 2011 - 22:16 #2
Mange tak... det virker... hvorfor?
Avatar billede arne_v Ekspert
23. august 2011 - 22:25 #3
INNER JOIN tager kun kombinatioer hvor der er noget paa baade venstre og hoejre side.

LEFT JOIN tager alt fra venstre side, hvis de er noget paa hoejre side tages det ellers tages der NULL.
Avatar billede arne_v Ekspert
23. august 2011 - 22:25 #4
Og et 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