/ 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
Group By
Fra : Thomas Møller Nexø


Dato : 01-02-04 03:17

Jeg har en database med to tabeller:
- Nyheder
- Artikeldebat

Nyhederne oprettes på min hjemmeside, og hvis de kommenteres af en bruger,
bliver de automatisk vist på en debatside (nyhedsoverskriften som et link
til en tråd).

Det virker sådan set fint nok, men mit problem er at jeg gerne vil have den
sidst kommenterede nyhedsoverskrift til at stå øverst i oversigten.
Pt. sorteres der efter nyhedsId og det er derfor svært at se hvis tidligere
nyheder bliver kommenteret efter et stykke tid.

Min SQL-sætning ser ud som følger:

Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "Select Id, Header, Artikeldebat.Dato FROM Nyheder INNER JOIN
Artikeldebat ON Nyheder.Id = Artikeldebat.ArtikelId Where Artikeldebat.Dato
> #" & Date() - 15 & "# Group By Artikeldebat.Dato Order By
Artikeldebat.Dato DESC", Conn

Her laves en join mellem de to tabeller og alle indlæg, der er mindre end 15
dage gamle vises som overskrifter (links) i selve debatoversigten.
Problemet er at den samme nyhedsoverskrift går igen flere gange hvis selve
debatindlæggets dato overholder kriteriet i SQL-sætningen.

Hvordan kan jeg lave en group by sådan at der kun vises én nyhedsoverskrift
for hver nyhed (debatemne)?

Håber jeg fik formuleret det klart nok.



 
 
Thomas Møller Nexø (02-02-2004)
Kommentar
Fra : Thomas Møller Nexø


Dato : 02-02-04 16:19

Slet ingen der har et forslag til løsning af dette?

> Min SQL-sætning ser ud som følger:
>
> Set Rs = Server.CreateObject("ADODB.Recordset")
> Rs.Open "Select Id, Header, Artikeldebat.Dato FROM Nyheder INNER JOIN
> Artikeldebat ON Nyheder.Id = Artikeldebat.ArtikelId Where
Artikeldebat.Dato
> > #" & Date() - 15 & "# Group By Artikeldebat.Dato Order By
> Artikeldebat.Dato DESC", Conn


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.576 / Virus Database: 365 - Release Date: 30-01-2004



Peter Lykkegaard (02-02-2004)
Kommentar
Fra : Peter Lykkegaard


Dato : 02-02-04 17:39

Thomas Møller Nexø wrote:
> Slet ingen der har et forslag til løsning af dette?
>
Tjohh, muligvis
Hvilket RDBMS?

- Peter



Thomas Møller Nexø (02-02-2004)
Kommentar
Fra : Thomas Møller Nexø


Dato : 02-02-04 22:43

Jeg bruger Access som database.

> Tjohh, muligvis
> Hvilket RDBMS?
>
> - Peter



---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.576 / Virus Database: 365 - Release Date: 30-01-2004



Peter Lykkegaard (03-02-2004)
Kommentar
Fra : Peter Lykkegaard


Dato : 03-02-04 00:40

Thomas Møller Nexø wrote:
> Slet ingen der har et forslag til løsning af dette?
>
>> Min SQL-sætning ser ud som følger:
>>
>> Set Rs = Server.CreateObject("ADODB.Recordset")
>> Rs.Open "Select Id, Header, Artikeldebat.Dato FROM Nyheder INNER
>> JOIN Artikeldebat ON Nyheder.Id = Artikeldebat.ArtikelId Where
> Artikeldebat.Dato
>>> #" & Date() - 15 & "# Group By Artikeldebat.Dato Order By
>>> Artikeldebat.Dato DESC", Conn
>

Select N.Id, N.Header,
(Select Max(AD.Dato) From Artikeldebat AD
Where AD.ArtikelId = N.Id) As ArtDato
From Nyheder N
Where N.Id In (
Select A.ArtikelId
From ArtikeDebat A
Where A.Dato = Date())

Jeg har rettet afgrænsningen
Du kan copy'n'paste SQL strengen direkte ind i Access's QBE editor og fedte
videre med den der

Der er et issue med sorteringen, men du kan sætte denne efter at du har
hentet data
Det er vist noget med
RS.Sort = "ArtDato Desc"

Frit efter mit gamle hovede

- Peter



Thomas Møller Nexø (06-02-2004)
Kommentar
Fra : Thomas Møller Nexø


Dato : 06-02-04 00:56

Ok. Takker for dit indlæg. Jeg kan dog ikke umiddelbart få det til at funke.
Jeg forstår ikke hvorfor der ikke er en lidt mere enkel metode. Har forsøgt
mig med group by, men her får jeg en fejl om at nogle felter er valgt, men
ikke er med i aggregat-funktionen.
Hvis jeg bare kan få dem knyttet ind i denne funktion sådan at der grupperes
efter Id, Header og Artikeldebat.Dato, ja så er dagen reddet

"Peter Lykkegaard" <polonline@hotmail.dk> skrev i en meddelelse
news:401ee07b$0$27360$edfadb0f@dread16.news.tele.dk...
> Thomas Møller Nexø wrote:
> > Slet ingen der har et forslag til løsning af dette?
> >
> >> Min SQL-sætning ser ud som følger:
> >>
> >> Set Rs = Server.CreateObject("ADODB.Recordset")
> >> Rs.Open "Select Id, Header, Artikeldebat.Dato FROM Nyheder INNER
> >> JOIN Artikeldebat ON Nyheder.Id = Artikeldebat.ArtikelId Where
> > Artikeldebat.Dato
> >>> #" & Date() - 15 & "# Group By Artikeldebat.Dato Order By
> >>> Artikeldebat.Dato DESC", Conn
> >
>
> Select N.Id, N.Header,
> (Select Max(AD.Dato) From Artikeldebat AD
> Where AD.ArtikelId = N.Id) As ArtDato
> From Nyheder N
> Where N.Id In (
> Select A.ArtikelId
> From ArtikeDebat A
> Where A.Dato = Date())
>
> Jeg har rettet afgrænsningen
> Du kan copy'n'paste SQL strengen direkte ind i Access's QBE editor og
fedte
> videre med den der
>
> Der er et issue med sorteringen, men du kan sætte denne efter at du har
> hentet data
> Det er vist noget med
> RS.Sort = "ArtDato Desc"
>
> Frit efter mit gamle hovede
>
> - Peter
>
>



Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408509
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste