Avatar billede tblaster Nybegynder
21. november 2003 - 15:16 Der er 7 kommentarer og
1 løsning

Samle poster der har samme id i sql sætning

Hejsa

Jeg har føgende sql som henter en masse informationer ud fra min database:

Sql= "SELECT L.Navn as Lejer, R.Navn as Ressource, BR.Antal From Lejer as L, Ressourcer as R, Booking as B, BookingRessource as BR, Bruger as BG Where " & Dato2 & Ressource & " and BG.LejerID = L.LejerID and BG.LejerID = " & Request.Form("Lejer-" & i & "") & " and B.BrugerID = BG.BrugerID and B.BookingID = BR.BookingID and BR.RessourceID = R.RessourceID Order By R.Navn"

Kan jeg gøre så den samler antallet de poster hvor R.RessourceID er ens og kun udskriver dem en gang?

Eksempelvis udskriver overstående følgende:
Ressource 1 ID: 1 Antal: 21
Ressource 2 ID:43 Antal: 4
Ressource 3 ID:24 Antal: 2
Ressource 1 ID: 1 Antal: 12

Jeg vil gerne kun ende med følgende:
Ressource 1 ID: 1 Antal: 33
Ressource 2 ID:43 Antal: 4
Ressource 3 ID:24 Antal: 2

Kan dette gøres og hvis hvordan? Jeg skal gerne have hurtig hjælp!
Avatar billede hossein Nybegynder
21. november 2003 - 15:40 #1
Du skal bruge GROUP BY.

SELECT R.RessourceID, Sum(BR.Antal) as antal from .... where...
GROUP BY R.RessourceID
Avatar billede tblaster Nybegynder
21. november 2003 - 16:07 #2
Det giver:

Column 'L.Navn' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Avatar billede cool_casper Nybegynder
21. november 2003 - 16:21 #3
Som hossein siger skal du bruge en group funktion.. GROUP BY er udemækret til formålet:

Sql= "SELECT L.Navn AS Lejer, R.Navn AS Ressource, BR.Antal FROM Lejer AS L, Ressourcer AS R, Booking AS B, BookingRessource AS BR, Bruger AS BG WHERE " & Dato2 & Ressource & " AND BG.LejerID = L.LejerID AND BG.LejerID = " & Request.Form("Lejer-" & i) & " AND B.BrugerID = BG.BrugerID AND B.BookingID = BR.BookingID AND BR.RessourceID = R.RessourceID GROUP BY r.RessourceID ORDER BY R.Navn"
Avatar billede tblaster Nybegynder
21. november 2003 - 16:25 #4
Det giver stadig:

Microsoft OLE DB Provider for SQL Server error '80040e14'

Column 'L.Navn' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Avatar billede cool_casper Nybegynder
21. november 2003 - 16:45 #5
hm.. Du skal vist have alle de felter du vil trække ud ind i din GROUP BY funktion!
( http://www.mysql.com/documentation/mysql/bychapter/manual_Reference.html#Group_by_functions_and_modifiers )
Prøv:
Sql= "SELECT L.Navn AS Lejer, R.Navn AS Ressource, BR.Antal FROM Lejer AS L, Ressourcer AS R, Booking AS B, BookingRessource AS BR, Bruger AS BG WHERE " & Dato2 & Ressource & " AND BG.LejerID = L.LejerID AND BG.LejerID = " & Request.Form("Lejer-" & i) & " AND B.BrugerID = BG.BrugerID AND B.BookingID = BR.BookingID AND BR.RessourceID = R.RessourceID GROUP BY r.RessourceID, L.Navn, R.Navn, BR.Antal ORDER BY R.Navn"
Avatar billede tblaster Nybegynder
21. november 2003 - 17:05 #6
Nu melder den ingen fejl men den grouper dem ikke.
Avatar billede cool_casper Nybegynder
21. november 2003 - 17:18 #7
hmm.. Nu må jeg godt nok indrømme at jeg er blank! :\
Ved ikke lige hvorfor den ikke grouper..
Avatar billede hossein Nybegynder
21. november 2003 - 20:06 #8
din sql sætning er ikke helt korrekt:

SELECT L.Navn AS Lejer, R.Navn AS Ressource, BR.Antal FROM
Lejer AS L, Ressourcer AS R, Booking AS B, BookingRessource AS BR, Bruger AS BG
WHERE " & Dato2 & Ressource & "  -> hvad mener du med det?
AND BG.LejerID = L.LejerID
AND B.BrugerID = BG.BrugerID
AND B.BookingID = BR.BookingID
AND BR.RessourceID = R.RessourceID
AND BG.LejerID = " & Request.Form("Lejer-" & i) & "
GROUP BY r.RessourceID
ORDER BY R.Navn"

Det bliver lidt svært for mig at se hvad skal outputet vær, men du kan evt. sende en kopi af din db (med nogle får rækker i hver tabel) til mig så kan jeg kigge på det. mach3@get2net.dk
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester