07. juni 2004 - 14:04Der er
18 kommentarer og 1 løsning
Vis alle og ikke kun nogle få
Jeg har en database med nogle tabeller over entreprenører, sager og udbud. Jeg vil gerne have data ud om enkelte entreprenører, hvilke sager og udbud de er med i samt hvilke sager de har vundet.
Til det har jeg følgende fra ACCESS:
SELECT entreprenørTabel.e_id, entreprenørTabel.navn, sagsTabel.journalNr, sagsTabel.arbNavn, sagsTabel.adresse, sagsTabel.udbudsdato, udbudsTabel.pris_1, udbudsTabel.vundet_1, udbudsTabel.vundet_2, udbudsTabel.vundet_3, udbudsTabel.vundet_4, udbudsTabel.vundet_5, udbudsTabel.vundet_6 FROM (entreprenørTabel INNER JOIN udbudsTabel ON entreprenørTabel.e_id=udbudsTabel.e_id_1) INNER JOIN sagsTabel ON udbudsTabel.u_id=sagsTabel.u_id WHERE (((entreprenørTabel.e_id)=[udbudsTabel.e_id_1] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_2] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_3] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_4] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_5] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_6]) AND ((udbudsTabel.pris_1)>0));
Men den henter kun dem ud der har vundet. Og den skal jo også hente alle de andre ud.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
SELECT entreprenørTabel.e_id, entreprenørTabel.navn, sagsTabel.journalNr, sagsTabel.arbNavn, sagsTabel.adresse, sagsTabel.udbudsdato, udbudsTabel.pris_1, udbudsTabel.vundet_1, udbudsTabel.vundet_2, udbudsTabel.vundet_3, udbudsTabel.vundet_4, udbudsTabel.vundet_5, udbudsTabel.vundet_6 FROM (entreprenørTabel INNER JOIN udbudsTabel ON entreprenørTabel.e_id=udbudsTabel.e_id_1) LEFT OUTER JOIN sagsTabel ON udbudsTabel.u_id=sagsTabel.u_id WHERE (((entreprenørTabel.e_id)=[udbudsTabel.e_id_1] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_2] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_3] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_4] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_5] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_6]) AND ((udbudsTabel.pris_1)>0));
SELECT entreprenørTabel.e_id, entreprenørTabel.navn, sagsTabel.journalNr, sagsTabel.arbNavn, sagsTabel.adresse, sagsTabel.udbudsdato, udbudsTabel.pris_1, udbudsTabel.vundet_1, udbudsTabel.vundet_2, udbudsTabel.vundet_3, udbudsTabel.vundet_4, udbudsTabel.vundet_5, udbudsTabel.vundet_6 FROM (entreprenørTabel LEFT JOIN udbudsTabel ON entreprenørTabel.e_id = udbudsTabel.e_id_1) LEFT JOIN sagsTabel ON udbudsTabel.u_id = sagsTabel.u_id WHERE (((entreprenørTabel.e_id)=[udbudsTabel.e_id_1] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_2] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_3] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_4] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_5] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_6]) AND ((udbudsTabel.pris_1)>0));
får jeg stadig kun vist de data hvor der er nogle der har vundet sagen.
Denne giver flere records ... begrænsningen ligger udbudsTabel.pris_1 >0 ... ændret til >=0 ..
SELECT entreprenørTabel.e_id, entreprenørTabel.navn, sagsTabel.journalNr, sagsTabel.arbNavn, sagsTabel.adresse, sagsTabel.udbudsdato, udbudsTabel.pris_1, udbudsTabel.vundet_1, udbudsTabel.vundet_2, udbudsTabel.vundet_3, udbudsTabel.vundet_4, udbudsTabel.vundet_5, udbudsTabel.vundet_6 FROM (entreprenørTabel LEFT JOIN udbudsTabel ON entreprenørTabel.e_id = udbudsTabel.e_id_1) LEFT JOIN sagsTabel ON udbudsTabel.u_id = sagsTabel.u_id WHERE (((entreprenørTabel.e_id)=[udbudsTabel.e_id_1] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_2] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_3] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_4] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_5] Or (entreprenørTabel.e_id)=[udbudsTabel.e_id_6]) AND ((udbudsTabel.pris_1)>=0)) OR (((udbudsTabel.pris_2)>=0)) OR (((udbudsTabel.pris_3)>=0)) OR (((udbudsTabel.pris_4)>=0)) OR (((udbudsTabel.pris_5)>=0)) OR (((udbudsTabel.pris_6)>=0));
Med dette får jeg at vide hvem der har vundet den enkelte sag. Jeg mangler så "bare" at få alle de andre entreprenørnavne ud og få at vide om de har budt på nogle af sagerne, samt hvilke.
Vi er nu et skridt nærmere. Den udskriver nu - alle entreprenørnavne - hvem der har vundet de enkelte sager
Men den mangler at skrive hvem der har budt på sagerne. Der kan være op til 6 der har budt, men kun én vinder sagen. Det var derfor jeg havde den der WHERE-sætning
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.