11. februar 2006 - 23:21Der er
12 kommentarer og 1 løsning
inner join hvordan?
Har en kalender hvor jeg henter en månedsoversigt ud sådan her:
strSQL = "SELECT * FROM kalender WHERE CDate(fra) = #" & dato2 & "# OR (CDate(fra) <= #" & dato2 & "# AND til is not null and CDate(til) >= #" & dato2 & "#);"
Det skal jeg have kædet sammen med at den kun skal hente de poster der matcher overstående kriterier fra tabellen kalender, men samtidig også matcher en given værdi fra tabellen kalender_deltagere (feltet: ref_gren), hvordan gør jeg det???
Hvad skal feltet 'ref_gren' fra 'kalender_deltagere' matches med? Kan noget a la dette bruges?:
strSQL = "SELECT * FROM kalender, kalender_deltagere WHERE (CDate(fra) = #" & dato2 & "# OR (CDate(fra) <= #" & dato2 & "# AND til is not null and CDate(til) >= #" & dato2 & "#)) AND kalender_deltagere.ref_gren = " & gren & ";"
strSQL = "SELECT * FROM kalender, kalender_deltagere WHERE (CDate(fra) = #" & dato2 & "# OR (CDate(fra) <= #" & dato2 & "# AND til is not null and CDate(til) >= #" & dato2 & "#)) AND kalender_deltagere.ref_gren = kalender.id;"
tak for dit svar... og undskyld min sene tilbagemelding! Jeg glemte lige en ting.. du har jo lavet det fint med at kalender_deltagere.ref_gren skal være = xx men hvis jeg nu gerne vil have at ref_gren må have 2 forskellige værdier, er det så bare sådan:??
strSQL = "SELECT * FROM kalender, kalender_deltagere WHERE (CDate(fra) = #" & dato2 & "# OR (CDate(fra) <= #" & dato2 & "# AND til is not null and CDate(til) >= #" & dato2 & "#)) AND kalender_deltagere.ref_gren = kalender.id or kalender_deltagere.ref_gren = ref_2;"
Pga. operator-præcedens skal der lige en parantes omkring 'or'-udtrykket, da 'and' binder stærkere, og hvis 'ref_2' ikke kommer fra 'kalender' eller 'kalender_deltagere' skal den vel indsættes som '" & ref_2 & "':
strSQL = "SELECT * FROM kalender, kalender_deltagere WHERE (CDate(fra) = #" & dato2 & "# OR (CDate(fra) <= #" & dato2 & "# AND til is not null and CDate(til) >= #" & dato2 & "#)) AND (kalender_deltagere.ref_gren = kalender.id OR kalender_deltagere.ref_gren = " & ref_2 & ");"
Hej tjp... håber du lige vil give lidt hjælp igen... det virkede desværre ikke helt som jeg lige troede..
SQL sætningen ser sådan her ud nu: strSQL = "SELECT * FROM kalender_deltagere, kalender WHERE (CDate(fra) = #" & dato2 & "# OR (CDate(fra) <= #" & dato2 & "# AND til is not null and CDate(til) >= #" & dato2 & "#)) AND (kalender_deltagere.ref_community = kalender.id OR kalender_deltagere.ref_gren = 0);"
Hvis jeg deler det lidt op... kalender_deltagere.ref_community = kalender.id - Virker næsten efter hensigten... Den tager de arrangementer med som den skal, men den tager også lidt mere end den skal... Altså hvor ref_community IKKE er = kalender.id!
MEN det står meget værre til med kalender_deltagere.ref_gren = 0 - SÅ længe jeg har sat værdien til 0 virker det fint, men med alt andet henter den arrangementet fra databasen og gentager det noget der ligner 100 gange... har du et godt bud på det??
Hm, hvis du helt fjerner 'kalender_deltagere.ref_gren = 0' giver den så kun de ønskede rækker for 'kalender_deltagere.ref_community = kalender.id'? Og hvilken datatyper har 'kalender_deltagere.ref_gren'?
strSQL = "SELECT * FROM kalender_deltagere, kalender WHERE (CDate(fra) = #" & dato2 & "# OR (CDate(fra) <= #" & dato2 & "# AND til is not null and CDate(til) >= #" & dato2 & "#)) AND kalender_deltagere.ref_community = " & rs_community("id") & ";"
Det giver stadig for mange poster! På en anden side, bruger jeg næsten samme sætning, men hvor den ikke skal tjekke posterne op i mod kalender_deltagere - og det er præcis de samme poster jeg får, så det virker lidt ligesom om at den kun går ind og tjekker om posterne i kalender opfylder dato-kriterierne og intet andet!
Tak for din store hjælp... med lidt hjælp fra activedeveloper, fandt jeg frem til at der mangler lidt forbindelse mellem de 2 tabeller!
strSQL = "SELECT * FROM kalender WHERE ( (fra = #" & dato2 & "# OR fra <= #" & dato2 & "#) AND til is not null and til >= #" & dato2 & "#) AND Exists(select id from kalender_deltagere where kalender_deltagere.ref_kalender=kalender.id AND ( ref_community = " & rs_community("id") & " OR ref_gren= " & rs_community("ref_gren") & ") )"
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.