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

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Inner join med group by clause
Fra : Thomas Møller Nexø


Dato : 16-01-04 13:27

Hej NG,

Jeg har lavet en debatside:
http://havensupport.dk/artikeldebat_oversigt.asp, hvor alle
nyheder, der er blevet kommenteret optræder i en liste med et
link til selve debatten for den givne nyhed.

Det virker fint nok, men jeg kunne godt tænke mig at hver gang
der bliver svaret på en eksisterende tråd i debatten, at denne
tråd bliver representeret i toppen af debatoversigten.

Pt. udvælges overskrifterne fra nyhedstabellen og sorteres efter
dato, og seneste indlæg vil derfor ikke komme til at stå i toppen
af siden.

Her er den nuværende SQL:

<%
            Set Rs = Server.CreateObject("ADODB.Recordset")
               Rs.Open "Select * From nyheder Where Kommenteret = True
Order By Dato DESC", Conn
            %>

Herefter loopes der gennem alle posterne og udskrives en
overskrift for hver nyhed med mindst én kommentar i tabellen
"Artikeldebat", hvor indlæggene ligger.

Hvis jeg laver en join-forbindelse med group by vises en liste
meed alle de seneste indlæg, men indlæggene vises et hav ad
gangen under hinanden. Jeg har så prøvet med group by, men så får
jeg en fejl om at jeg ikke bruger alle de kolonner jeg trækker ud
fra starten.

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

Giver fejlen:

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'

[Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre
en forespørgsel, der ikke medtager det angivne udtryk "Id" som en
del af en aggregatfunktion.

/haven/artikeldebat_oversigt.asp, linje 77


Hvis jeg fjerner group by kommer der som sagt ikke en fejl, men
altså en masse rækker med de samme værdier.

Nogen der kan hjælpe?

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Jesper Stocholm (16-01-2004)
Kommentar
Fra : Jesper Stocholm


Dato : 16-01-04 14:16

Thomas Møller Nexø <thomas@havensupport.dk> wrote in
news:bu8la5$rn2$1@sunsite.dk:

> Hej NG,
>
> Jeg har lavet en debatside:
> http://havensupport.dk/artikeldebat_oversigt.asp, hvor alle
> nyheder, der er blevet kommenteret optræder i en liste med et
> link til selve debatten for den givne nyhed.
>
> Det virker fint nok, men jeg kunne godt tænke mig at hver gang
> der bliver svaret på en eksisterende tråd i debatten, at denne
> tråd bliver representeret i toppen af debatoversigten.
>
> Pt. udvælges overskrifterne fra nyhedstabellen og sorteres efter
> dato, og seneste indlæg vil derfor ikke komme til at stå i toppen
> af siden.
>
> Her er den nuværende SQL:
>
> <%
> Set Rs = Server.CreateObject("ADODB.Recordset")
> Rs.Open "Select * From nyheder Where
> Kommenteret = True
> Order By Dato DESC", Conn
> %>
>
> Herefter loopes der gennem alle posterne og udskrives en
> overskrift for hver nyhed med mindst én kommentar i tabellen
> "Artikeldebat", hvor indlæggene ligger.
>
> Hvis jeg laver en join-forbindelse med group by vises en liste
> meed alle de seneste indlæg, men indlæggene vises et hav ad
> gangen under hinanden. Jeg har så prøvet med group by, men så får
> jeg en fejl om at jeg ikke bruger alle de kolonner jeg trækker ud
> fra starten.
>
> Set Rs = Server.CreateObject("ADODB.Recordset")
> Rs.Open "Select Id, Header FROM Nyheder INNER
> JOIN
> Artikeldebat ON Nyheder.Id = Artikeldebat.ArtikelId Group By
> Nyheder.Header Order By Artikeldebat.Dato DESC", Conn
>
> Giver fejlen:
>
> Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
>
> [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre
> en forespørgsel, der ikke medtager det angivne udtryk "Id" som en
> del af en aggregatfunktion.
>
> /haven/artikeldebat_oversigt.asp, linje 77
>
>
> Hvis jeg fjerner group by kommer der som sagt ikke en fejl, men
> altså en masse rækker med de samme værdier.
>
> Nogen der kan hjælpe?

Du bør stille dit spørgsmål i dk.edb.database, da dit indlæg ikke har
noget direkte med ASP at gøre, men derimod "kun" SQL. Jeg sætter XFUT
til den gruppe, dvs svar på dette indlæg vil lande i dén gruppe.

XKUT: dk.edb.database, dk.edb.internet.webdesign.serverside.asp

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


Dato : 17-01-04 05:23

> Du bør stille dit spørgsmål i dk.edb.database, da dit indlæg ikke har
> noget direkte med ASP at gøre, men derimod "kun" SQL. Jeg sætter XFUT
> til den gruppe, dvs svar på dette indlæg vil lande i dén gruppe.
>
> XKUT: dk.edb.database, dk.edb.internet.webdesign.serverside.asp

Hvor finder jeg den famøse gruppe?
Kan du evt. give mig et link?

På forhånd tak.


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (17-01-2004)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 17-01-04 11:00

Thomas Møller Nexø skrev:

> Hvor finder jeg den famøse gruppe?
> Kan du evt. give mig et link?

Hvis du bruger et newsprogram - fx Outlook Express - i stedet for
en browser/HTML.dk til nyhedsgrupperne, så skulle du bare lave en
opfølgning på Jespers indlæg - så var det havnet i databasegruppen.

HTML.dk giver kun adgang til en lille del af de danske
nyhedsgrupper - det er et problem hvis man får behov for at benytte
en af de grupper der ikke er med der. Jeg kan anbefale et rigtigt
newsprogram - det giver nogle muligheder man ikke har med html.dk.
Du kan se lidt om hvordan usenet fungerer - incl. hjælp til
opsætning af programmer - her: <http://www.usenet.dk/info/>.

Hvis du hellere vil benytte en browser, kan du prøve TDC's
onlineadgang til usenet: <http://nyhedsgrupper.tdconline.dk/>.

Her er databasegruppen også med.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Kristian Damm Jensen (19-01-2004)
Kommentar
Fra : Kristian Damm Jensen


Dato : 19-01-04 08:29

Jesper Stocholm wrote:
> Thomas Møller Nexø <thomas@havensupport.dk> wrote in
> news:bu8la5$rn2$1@sunsite.dk:
>
>> Hej NG,
>>
>> Jeg har lavet en debatside:
>> http://havensupport.dk/artikeldebat_oversigt.asp, hvor alle
>> nyheder, der er blevet kommenteret optræder i en liste med et
>> link til selve debatten for den givne nyhed.
>>
>> Det virker fint nok, men jeg kunne godt tænke mig at hver gang
>> der bliver svaret på en eksisterende tråd i debatten, at denne
>> tråd bliver representeret i toppen af debatoversigten.
>>
>> Pt. udvælges overskrifterne fra nyhedstabellen og sorteres efter
>> dato, og seneste indlæg vil derfor ikke komme til at stå i toppen
>> af siden.
>>
>> Her er den nuværende SQL:
>>
>> <%
>> Set Rs = Server.CreateObject("ADODB.Recordset")
>> Rs.Open "Select * From nyheder Where
>> Kommenteret = True
>> Order By Dato DESC", Conn
>> %>
>>
>> Herefter loopes der gennem alle posterne og udskrives en
>> overskrift for hver nyhed med mindst én kommentar i tabellen
>> "Artikeldebat", hvor indlæggene ligger.
>>
>> Hvis jeg laver en join-forbindelse med group by vises en liste
>> meed alle de seneste indlæg, men indlæggene vises et hav ad
>> gangen under hinanden. Jeg har så prøvet med group by, men så får
>> jeg en fejl om at jeg ikke bruger alle de kolonner jeg trækker ud
>> fra starten.
>>
>> Set Rs = Server.CreateObject("ADODB.Recordset")
>> Rs.Open "Select Id, Header FROM Nyheder
>> INNER JOIN
>> Artikeldebat ON Nyheder.Id = Artikeldebat.ArtikelId Group By
>> Nyheder.Header Order By Artikeldebat.Dato DESC", Conn
>>
>> Giver fejlen:
>>
>> Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
>>
>> [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre
>> en forespørgsel, der ikke medtager det angivne udtryk "Id" som en
>> del af en aggregatfunktion.
>>
>> /haven/artikeldebat_oversigt.asp, linje 77
>>
>>
>> Hvis jeg fjerner group by kommer der som sagt ikke en fejl, men
>> altså en masse rækker med de samme værdier.
>>
>> Nogen der kan hjælpe?

Når du benytter group by skal alle de felter i select-klausulen, der
ikke indgår i en aggregat-funktion også fremgå af group by-klausulen.
Men i øvrigt: hvis du ikke ønsker en aggregatfunktion, kan du lige så
godt bruge select distinct i stedet for.

Det er i øvrigt uklart, hvordan order by fungerer, når du sorterer
efter et felt der ikke udvælges.

--
Kristian Damm Jensen
damm (at) ofir (dot) dk



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


Dato : 19-01-04 11:07

> Når du benytter group by skal alle de felter i select-klausulen, der
> ikke indgår i en aggregat-funktion også fremgå af group by-klausulen.
> Men i øvrigt: hvis du ikke ønsker en aggregatfunktion, kan du lige så
> godt bruge select distinct i stedet for.
>
> Det er i øvrigt uklart, hvordan order by fungerer, når du sorterer
> efter et felt der ikke udvælges.

Hej Kristian,

Tak for dit svar.
Jeg har forsøgt mig med en Select Distinct - se herunder:

Set Rs = Server.CreateObject("ADODB.Recordset")
Rs.Open "Select DISTINCT Header, Id FROM Nyheder INNER
JOIN Artikeldebat ON Nyheder.Id = Artikeldebat.ArtikelId Order By Nyheder.Id
DESC", Conn

Men kunne ikke inkludere (sortere) efter dato i den anden tabel
(Artikeldebat).
På nuværende tidspunkt sorteres der efter nyhedsId, men der skal helst
sorteres efter dato eller Id i Artikeldebat tabellen sådan at seneste indlæg
rygges op i toppen når der er svaret.

Kan du hjælpe?



Kristian Damm Jensen (19-01-2004)
Kommentar
Fra : Kristian Damm Jensen


Dato : 19-01-04 13:07

Thomas Møller Nexø wrote:
>> Når du benytter group by skal alle de felter i select-klausulen,
der
>> ikke indgår i en aggregat-funktion også fremgå af group
by-klausulen.
>> Men i øvrigt: hvis du ikke ønsker en aggregatfunktion, kan du lige

>> godt bruge select distinct i stedet for.
>>
>> Det er i øvrigt uklart, hvordan order by fungerer, når du sorterer
>> efter et felt der ikke udvælges.
>
> Hej Kristian,
>
> Tak for dit svar.
> Jeg har forsøgt mig med en Select Distinct - se herunder:
>
> Set Rs = Server.CreateObject("ADODB.Recordset")
> Rs.Open "Select DISTINCT Header, Id FROM Nyheder
> INNER JOIN Artikeldebat ON Nyheder.Id = Artikeldebat.ArtikelId Order
> By Nyheder.Id DESC", Conn
>
> Men kunne ikke inkludere (sortere) efter dato i den anden tabel
> (Artikeldebat).
> På nuværende tidspunkt sorteres der efter nyhedsId, men der skal
helst
> sorteres efter dato eller Id i Artikeldebat tabellen sådan at
seneste
> indlæg rygges op i toppen når der er svaret.
>
> Kan du hjælpe?

Hvad er der galt i at medtage dato i din select?

--
Kristian Damm Jensen
damm (at) ofir (dot) dk



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


Dato : 19-01-04 12:26

> Når du benytter group by skal alle de felter i select-klausulen, der
> ikke indgår i en aggregat-funktion også fremgå af group by-klausulen.
> Men i øvrigt: hvis du ikke ønsker en aggregatfunktion, kan du lige så
> godt bruge select distinct i stedet for.
>
> Det er i øvrigt uklart, hvordan order by fungerer, når du sorterer
> efter et felt der ikke udvælges.

Er der evt. nogen der kan vise en group by med ovenstående - altså en
funktion hvor alle felter indgår?



Kristian Damm Jensen (19-01-2004)
Kommentar
Fra : Kristian Damm Jensen


Dato : 19-01-04 13:08

Thomas Møller Nexø wrote:
>> Når du benytter group by skal alle de felter i select-klausulen,
der
>> ikke indgår i en aggregat-funktion også fremgå af group
by-klausulen.
>> Men i øvrigt: hvis du ikke ønsker en aggregatfunktion, kan du lige

>> godt bruge select distinct i stedet for.
>>
>> Det er i øvrigt uklart, hvordan order by fungerer, når du sorterer
>> efter et felt der ikke udvælges.
>
> Er der evt. nogen der kan vise en group by med ovenstående - altså
en
> funktion hvor alle felter indgår?

select id, navn, adresse, count(*)
from tabel
where id between 500 and 1000
group by id, navn, adresse
sort by navn

--
Kristian Damm Jensen
damm (at) ofir (dot) dk



Claus Marcussen (17-01-2004)
Kommentar
Fra : Claus Marcussen


Dato : 17-01-04 07:24

Thomas Møller Nexø wrote in
dk.edb.internet.webdesign.serverside.asp:

> Hvis jeg fjerner group by kommer der som sagt ikke en fejl, men
> altså en masse rækker med de samme værdier.

Har du prøvet med DISTINCT - fjerner dupletter .-)

mvh
Claus Marcussen

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

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

Månedens bedste
Årets bedste
Sidste års bedste