29. december 2007 - 17:51Der er
15 kommentarer og 1 løsning
Sql hent fra tabel, med kriterier fra 2 tabeller
Jeg har denne SQL:
strSQL = "SELECT * FROM projekter WHERE slettet = false and cdate(dato_fra) = #" & dato_start & "# or cdate(dato_til) = #" & dato_start & "# and slettet = FALSE or cdate(dato_fra) <= #" & dato_start & "# and cdate(dato_til) >= #" & dato_start & "# and slettet = FALSE or cdate(dato_fra) >= #" & dato_start & "# and cdate(dato_til) <= #" & dato_slut & "# and slettet = FALSE order by dato_fra asc ;"
Jeg skal bruge en nyt sql, der har samme kriterier som ovenfor, men samtidig går ind i tabellen projekter_medarbejdre og tjekker at posten også opfylder kriteriet ref_medarb = Request.("id")
Jeg er lidt usikker på hvad du mener med at ref_medarb = Request.("id") (jeg antager du mener Request("id")), men umiddelbart burde det være nok bare at inner join'e, da projekter ikke vil fremgå af resultatet, hvis der ikke findes mindst en række i projekter_medarbejdere. Nogenlunde således:
Jeg synes dog dine AND'er og OR'er er lidt sporadiske og tvivler lidt på om du får det resultat du har til hensigt. Jeg kan i øvrigt anbefale dig at bruge BETWEEN til datointervaller i stedet for den benyttede konstruktion.
Hvis mit foreslag ikke er korrekt, må du lige fortælle lidt mere om de to tabeller (hvilke felter de indeholder og typerne heraf), samt hvad det er du ønsker at opnå med dine data.
Der gik det så måske lige hurtigt nok... din sql virker som sådan fint nok, men det skal ikke være hvoer pm.ref_medarb = p.id med hvor pm.ref_medarb = Request.QueryString("id")
Jeg har prøvet denne: "INNER JOIN projekter_medarbejdere AS pm ON pm.ref_medarb = " & Request.QueryString("id") & " " & _
Men giver fejlen: Microsoft JET Database Engine fejl '80040e14'
OK, men så må du bare kunne sætte et check ind i where-delen på om p.id = request.querystring("id") - det burde give den samme effekt (idet jeg antager at ref_medarb er fremmednøglen i tabellen projekter_medarbejder der peger på id-kolonnen i projekter-tabellen)...
Lige et lille tillægs spørgsmål,som jeg håber at du kan hjælpe mig videre med.. Ovenover min SQL, har jeg jo Set rs_projekt = Server.CreateObject("ADODB.Recordset")
Således at jeg fra tabellen projekt kan hente et felt ud med rs_projekt("felt"), men jeg skal også bruge data fra et felt i projektere_medarbejdere... Har prøvet med pm.rs_projekt og bare pm mm. men kan ikke rigtig få det til at virke... Hvordan får jeg data derfra?
Det havde været lettere at give dig en konkret løsning, hvis du havde sagt hvilket felt det drejede sig om, men nu får du lige syntaksen for det, så kan du nok selv finde ud af at ændre feltnavnet :)
for at få alle felter fra alle de join'ede tabeller, men jeg er ikke tilhænger af den slags forespørgsler, da du ikke umiddelbart kan se på forespørgslen hvad der returneres og derfor skal have kendskab til tabellens opbygning for at vide hvad du har adgang til. Desuden vil du ofte blive straffet for den slags forespørgsler, fordi den typisk overfører for mange data ifht. det man har brug for, så det er en god idé at specificere de felter man har brug for (selvom det koster lidt mere at skrive, så mener jeg at man vinder noget ifht. læsbarheden af koden, hvilket man ikke skal negligere værdien af :-)).
Det virker, men jeg kan kun hente data ud fra tabellen projekter (som jeg gør ved at skrive rs_projekt("felt")) - Hvordan kobler jeg projekter_medarbejdere på der og hvad skal jeg skrive for at hente et felt ud?
Kan du ikke prøve at vise hvilke tabeller du har behov for at hente data fra, hvilke felter de indeholder og hvilke felter der forbinder de forskellige tabeller? Jeg har lidt svært ved at gennemskue om du rent faktisk vil have involveret en tabel mere (altså således der er 3 tabeller i stedet for de 2 der er nu), eller om det er noget andet du er på jagt efter...
Tabel: Projekter (dette er min "hoved"tabel) Felter: dato_fra, dato_til, projekt
Tabel: projekter_medarbejdere Her skal jeg have alle de poster med fra hvor feltet ref_projekt, svarer til feltet id i tabellen projekter, samt at feltet ref_medarb svarer til Request.QueryString("id") Felter: dato_fra, dato_til, ref_projekt, ref_medarb
Tabel: fravaer Her skal jeg have alle de poster hvor ref_medarb svarer til Request.QueryString("id") og tabellen er ikke bundet sammen med de 2 andre i form af id felter eller lign Felter: dao_fra, dato_til, ref_medarb, fravaer
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.