K@llenMedlem sedan mars 20032 667 inlägg Hej,
Jag vill ha ut unikt intArtikelSerial sorterade efter när en artikel kommenterades senast. Har testat DISTINCT, samt att gruppera på samtliga fält i selectlistan. I min enfald trodde jag att den feta raden i koden skulle fixa saken eftersom endast en post kan stämma överens med det villkoret.
Hur fasiken gör man?
SELECT a.intArtikelSerial, a.intArtikelId, a.intKatId, a.strArtikelRubrik
FROM artikel a
INNER JOIN artikel_comment ac
ON ( a.intArtikelId = ac.intArtSerieId )
[b]WHERE a.intArtikelSerial = a.intArtikelId [/b]
ORDER BY ac.dteCommentDate DESC LIMIT 8
dbms: mysql
K@llenMedlem sedan mars 20032 667 inlägg K@llenMedlem sedan mars 20032 667 inlägg Hej,
Nu har jag fått ut unika poster. :)
Men jag har fortfarande lite beskymmer. Den sorterar knasigt. Jag vill ha den artikeln som kommenterades senast överst och sedan den näst senaste osv.
SELECT ac.intArtSerieId, a.intArtikelSerial, a.intArtikelId, a.intKatId, a.strArtikelRubrik
FROM artikel a
LEFT OUTER JOIN artikel_comment ac
ON ( a.intArtikelId = ac.intArtSerieId )
WHERE a.intArtikelSerial = a.intArtikelId
GROUP BY ac.intArtSerieId, a.intArtikelSerial, a.intArtikelId, a.intKatId, a.strArtikelRubrik
ORDER BY ac.dteCommentDate DESC LIMIT 8
LarsGMedlem sedan dec. 200012 464 inlägg Din fråga är inte entydig och borde egentligen inte godkännas som korrekt.
SELECT ac.intArtSerieId, a.intArtikelSerial, a.intArtikelId, a.intKatId, a.strArtikelRubrik , max(ac.dteCommentDate) as x
FROM artikel a
LEFT OUTER JOIN artikel_comment ac
ON ( a.intArtikelId = ac.intArtSerieId )
WHERE a.intArtikelSerial = a.intArtikelId
GROUP BY ac.intArtSerieId, a.intArtikelSerial, a.intArtikelId, a.intKatId, a.strArtikelRubrik
ORDER BY x DESC LIMIT 8
K@llenMedlem sedan mars 20032 667 inlägg
LarsG skrev:
Din fråga är inte entydig och borde egentligen inte godkännas som korrekt.
SELECT ac.intArtSerieId, a.intArtikelSerial, a.intArtikelId, a.intKatId, a.strArtikelRubrik , max(ac.dteCommentDate) as x
FROM artikel a
LEFT OUTER JOIN artikel_comment ac
ON ( a.intArtikelId = ac.intArtSerieId )
WHERE a.intArtikelSerial = a.intArtikelId
GROUP BY ac.intArtSerieId, a.intArtikelSerial, a.intArtikelId, a.intKatId, a.strArtikelRubrik
ORDER BY x DESC LIMIT 8
Tack, fungerar utmärkt LarsG! :)
Jag provade en sådan variant också, kan man inte sortera efter ordningsnummer i mysql?
Men nu får du även säga B, vad är inte entydigt?
LarsGMedlem sedan dec. 200012 464 inlägg Ett exempel
A B
----
1 1
2 2
1 3
select a from t group by a order by b
I och med att du har group by så får du två poster
A
--
1
2
men vilket värde från B skall användas för sorteringen då A = 1?
1 eller 3? Beroende på vilket värde man skulle välja så blir det olika sortering och det finns inget som säger vilket av de möjliga B-värdena som skall användas.
K@llenMedlem sedan mars 20032 667 inlägg Ahhh. nu hajar jag. :D
Men hur ska man göra så frågan blir 100% korrekt?
K@llenMedlem sedan mars 20032 667 inlägg
LarsG skrev:
Din fråga är inte entydig och borde egentligen inte godkännas som korrekt
LarsG skrev:
Hur då 100% korrekt?
Alltså så att frågan blir entydig och därmed korrekt.
Jag misstänker att det går att göra med saker som mysql-(versionen) inte stödjer, men kan den bli entydíg och korrekt även med denna dbms. I detta avseende borde det väl kvitta om sorteringen sker på ena eller andra fältet/aliaset?
LarsGMedlem sedan dec. 200012 464 inlägg Den fråga som jag skrev är korrekt (och entydig).
Que?
K@llenMedlem sedan mars 20032 667 inlägg Nu när jag läst din förklaring en gång till trillade femöringen ner. Kan man skylla på värmen? :r
LarsG, du ska ha ett stort tack för din hjälpsamhet! :)