Avatar billede cjep Nybegynder
19. december 2004 - 18:08 Der er 5 kommentarer og
1 løsning

IFF i SQL-streng?

Jeg har 2 tabeller og ønsker for hver entry i tabel 1 (ForumFirstLevel.ForumID) at angive antal relaterede records i tabel 2 (ForumSecondLevel.ForumID).

Det virker fint således:
SELECT ForumFirstLevel.ForumID,ForumFirstLevel.ForumName,ForumFirstLevel.ForumDescription,ForumFirstLevel.ForumModeratorUserID,ForumFirstLevel.ForumSIG,ForumFirstLevel.ForumDateTime, count(*) as Entries FROM ForumFirstLevel, ForumSecondLevel WHERE ((ForumFirstLevel.ForumID=ForumSecondLevel.ForumID)) group by ForumFirstLevel.ForumID, ForumFirstLevel.ForumName,ForumFirstLevel.ForumDescription,ForumFirstLevel.ForumModeratorUserID,ForumFirstLevel.ForumSIG,ForumFirstLevel.ForumDateTime ORDER BY ForumFirstLevel.ForumID;

Desværre viser min sætning ikke records fra tabel 1, hvis der ikke findes en relateret record i tabel 2 .. Jeg har bakset en del med IFF sætningen i SQL uden at få det til at virke.

Nogen ideer? .. jeg ønsker kun en sql-sætning, da det er min datasource til et datagrid.

/claus
Avatar billede terry Ekspert
19. december 2004 - 18:58 #1
Try making your SQL in Access query builder. And change your ForumFirstLevel.ForumID=ForumSecondLevel.ForumID to an OUTER JOIN this will show records in the first table even when there are no records in table 2.
Avatar billede cjep Nybegynder
19. december 2004 - 19:03 #2
Kan du give mig et eksempel på hvordan sådan ville se ud .. har aldrig brugt OUTER JOIN før..

/claus
Avatar billede terry Ekspert
19. december 2004 - 19:07 #3
if you send me your dB I can make it for you

eksperten@NOSPAMsanthell.dk

remove NOSPAM
Avatar billede terry Ekspert
19. december 2004 - 19:09 #4
If you use the query builder then you can join the fields ForumFirstLevel.ForumID and ForumSecondLevel.ForumID using drag and drop. This will make an INNER JOIN then right click on th ethin line and choose from the choices the one which gives you records from table1
Avatar billede cjep Nybegynder
19. december 2004 - 19:14 #5
OK, så lykkedes det efter lidt Access JOIN-research her på Experten.dk. Count skulle endvidere tælle på ForumSecondLevel.ForumID ellers blev firstLevel talt til 1.

SQL strengen blev så således:

SELECT ForumFirstLevel.ForumID, ForumFirstLevel.ForumName, ForumFirstLevel.ForumDescription, ForumFirstLevel.ForumModeratorUserID, ForumFirstLevel.ForumSIG, ForumFirstLevel.ForumDateTime, Count(ForumSecondLevel.ForumID) AS Entries
FROM ForumFirstLevel Left OUTER JOIN ForumSecondLevel ON ForumFirstLevel.ForumID = ForumSecondLevel.ForumID
GROUP BY ForumFirstLevel.ForumID, ForumFirstLevel.ForumName, ForumFirstLevel.ForumDescription, ForumFirstLevel.ForumModeratorUserID, ForumFirstLevel.ForumSIG, ForumFirstLevel.ForumDateTime
ORDER BY ForumFirstLevel.ForumID;


Terry får point for hurtigt at have ledt mig på vej ;o)

/claus
Avatar billede terry Ekspert
20. december 2004 - 09:11 #6
Hi Claus
You need to accept my answer to close the question

thanks
Terry
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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