Andy_KMedlem sedan juli 200330 inlägg
Info: Jag använder mig av Access 2000 och vill göra en rapport från en databas med flera tabeller.
Problemet: Jag vill göra en rapport som visar information från flera olika tabeller. I dom flesta av tabellerna så kan personen som det är frågan bara finnas med 1 gång eller så finns han inte med alls. Att ta fram detta är inga problem.
Men att ta fram informationen ifrån tabeller där personen kan vara med flera gånger resulterar i att den anställde visas flera gånger(inte så konstigt, har använt mig av LEFT JOIN). Men hur gör jag för att detta inte ska ske? Finns det någon funktion i själva "rapportläget" som jag kan ta hjälp av eller går det att lösa rent SQL-mässigt?
Tacksam för snabba svar :h
Hoppas att jag postat denna fråga i rätt kategori... :r
För mer info skrik bara till :e
LarsGMedlem sedan dec. 200012 465 inlägg
Du får lägga till villkor så att bara en av de möjliga raderna kommer med
T.ex. om du har en tabell (t) med kolumnerna A och B
A B
----
1 'a'
1 'b'
2 'c'
2 'd'
Du kan t.ex. välja att för varje unikt värde i A ta det största värdet i B
select * from t as q
where b in (select max(b) from t where a = q.a)
Det finns inget sätt att säga: ge mig en post, det kvittar vilken.
Andy_KMedlem sedan juli 200330 inlägg
Tack för de snabba svaret!
Okej jag förstår hur du menar, men jag vill ha med alla poster för den personen. Det är de som är de stora problemet.
Bifogar lite kod iaf.
SELECT personal.anstNr AS personal_anstNr, personal.fnamn, personal.enamn, personal.fodDag,
personal.avdelning, personal.anstDat, personal.nuvBef, personal.skift, befattning.bef,
befattning.avd, befattning.skift, befattning.datum
FROM personal LEFT JOIN befattning ON personal.anstNr = befattning.anstNr
ORDER BY personal.anstNr;
Det jag har gjort hittills är att jag har använt mig av LEFT JOIN rakt igenom(klistrade bara in från en tabell som exempel). Vet även att detta inte går.
Jag har cirka 20 tabeller varav tre kan innehålla flera poster om personen. Vet ej om det går att lösa med SQL.
LarsGMedlem sedan dec. 200012 465 inlägg
Det går.
Tex om det är befattning som kan innehålla flera poster och du vill ha den som har senaste datum
SELECT personal.anstNr AS personal_anstNr,
personal.fnamn,
personal.enamn,
personal.fodDag,
personal.avdelning,
personal.anstDat,
personal.nuvBef,
personal.skift,
dt.bef,
dt.avd,
dt.skift,
dt.datum
FROM personal LEFT JOIN
(select bef,
avd,
skift,
datum
from befattning b
where datum = (select max(datum)
from befattning
where anstnr = b.anstnr)) dt
ON personal.anstNr = dt.anstNr
Andy_KMedlem sedan juli 200330 inlägg
Men jag vill komma åt _ALLA_ fält i befattning, men endast en gång ifrån personal.