/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MSSQL] Problem at gruppere
Fra : Anon


Dato : 23-10-05 00:08

Hejsa,

Jeg har et problem med følgende tabel, som skal repræsentere et meget
simpelt forum-system. Bemærk at der findes flere forskellige forums -
hver med sit eget bbsid.

CREATE TABLE [Bulletin] (
   [BulletinID] [int] IDENTITY (1, 1) NOT NULL ,
   [BBSID] [int] NULL ,
   [Posted] [datetime] NULL ,
   [authorID] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

Bemærk at overflødige felter er fjernet.

Jeg forsøger at lave en oversigt over de sidste indlæg i de forskellige
forums (dvs. unikt BBSID), hvilket kunne være fint at kunne gøre uden
skyde N+1 kald afsted mod DB. Jeg er lidt ad vejen - men det ser
alligevel ikke for godt ud, da jeg ikke får den primære nøgle med:

SELECT BBSID, MAX(Posted) AS Posted FROM Bulletin GROUP BY BBSID

Man kan selvf. lave følgende grimme hack, hvilket jeg absolut ikke er
glad for:

SELECT * FROM
(SELECT BBSID, MAX(Posted) AS Posted FROM Bulletin GROUP BY BBSID)
BulletinMax
INNER JOIN
Bulletin
ON BulletinMax.BBSID = Bulletin.ID AND BulletinMax.Posted = Bulletin.Posted

Så vidt jeg kan se mine DB-litteratur, så tillader GROUPING ikke at
medtage flere felter end 2: det som der grupperes på samt det felt der
aggregeres over - også selvom der er tale om MAX/MIN. Jeg forstår ikke
helt den begrundelsen for dette (det giver selvf. ikke mening med
SUM/COUNT/etc). Anyone?

Er mine eneste muligheder virkeligt, enten at
1) lade tuplen (BBSID, Posted) være PRIMARY KEY
2) kalde min DB N+1 gange?

Anon

 
 
Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408182
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste