18. februar 2003 - 12:56Der er
31 kommentarer og 1 løsning
SQL m. 3 datatabeller og vis resultat
Jeg har 3 databasetabeller:
1) jobansogninger: jobID(autonumber), en masse andre felter... 2) person_uddannelser: uddID(number), jobID(number) 3) uddannelser: uddID(autonumber), uddName(text), uddType(number)
Mine behov: 1) Jeg skal kunne søge i jobansogninger udfra f.eks. flere uddID'er 2) På resultatsiden skal jeg kunne se personerne, samt alle de uddName's som de har 3) Skal kunne se antal resultater 4) Skal kunne se f.eks. 20 personer pr. side
Håber nogen ved hvordan jeg skal strikke en SQL-sætning sammen til dette og kunne vise resultaterne.
Jeg kan ikke helt gennemskue om det er simpelt eller kompleks, men det må da kunne lade sig gøre.
I må meget gerne spørge hvis der er noget jeg ikke har forklaret godt nok...
AI bliver først for alvor en del af arbejdet, når teknologien integreres i den måde, vi arbejder på. At have adgang til AI betyder ikke nødvendigvis, at medarbejderne er klar til at bruge den.
select j.jobid, j.felt1, j.felt2 count(j.jobid) as antalhits from jobansogninger j, person_uddannelser p, uddannelser, u where u.uddid = p.iddid and p.jobid = a.jobid and u.uddid = 1234 group by j.jobid, j.felt1, j.felt2
Hvilken DB ?? I oracle er det noget i retning af: select ja."fornavn", ja."efternavn", udd.uddName, udd.uddType from jobansoegninger ja, uddannelser udd, person_uddannelser pudd where pud.uddid in ("dine uddid's") and ja.jobid = pud.jobid and udd.uddid = pud.uddid /
-Men det skal sikkert fin pudses lidt... M$ SQL er lidt anderledes (behandler joints lidt anderledes :-))
select j.jobid, j.felt1, j.felt2 count(j.jobid) as antalhits from jobansogninger j, person_uddannelser p, uddannelser u where u.uddid = p.iddid and p.jobid = a.jobid and u.uddid in (1,2,3,4) group by j.jobid, j.felt1, j.felt2
Hvis nu noget af det I skriver kan bruges, mangler jeg stadig en måde hvorpå jeg kan vise f.eks. 20 resultater pr. side og se antal resultater (f.eks. "1 til 20 ud af 854")
Mit største problem er sådan set at kunne vise personerne med alle deres uddannelser. Min nuværende løsning giver nogle dubletter hvis nu personen har flere uddannelser. Dertil har jeg lavet et script i visnings-delen der fjerner dubletterne, men så går der ged i min paging-del, da der jo stadig er "for mange" records, men dubletterne bare ikke bliver vist.
Der var vist nogle flere fejl i din sætning. Ver3:
select j.jobid, j.fornavn, j.efternavn, count(j.jobid) as antalhits from jobansogninger j, person_uddannelser p, uddannelser u where u.uddid = p.uddid and p.jobid = j.jobid and u.uddid in (1,2,3,4) group by j.jobid, j.fornavn, j.efternavn
Ser ud til at være noget i den retning jeg skal bruge... skal lige fifle lidt mere med det...
set personrs = conn.execute ("select * from personuddannelser") do while not personrs.eof data = data & ", " & personrs("uddannelsesid") personrs.movenext loop
' her har du så alle uddannelser i en streng. rs.movenext loop
Så laver den jo et recordset for hver person, ik? Det kan hurtigt gå galt, hvis man vælger at ville se alle resultater, da det vil sige der skal laves omkring 1-2000 recordsets...
Tror jeg er ved at have løst det, men kom i tanke om at hvis der ikke bliver søgt på nogen uddannelser, så skal alle personer vises - også selv om de ikke har nogen uddannelser. Det gør de ikke nu... nu vises kun personer der har uddannelser tilknyttet...
Nogen forslag?
Hvordan giver jeg dig (akj) point? Du står ikke i boksen ved Accepter/afvis.
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.