Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[MySQL] results in groepen sorteren op nieuwste post

Pagina: 1
Acties:

  • KOICE
  • Registratie: Januari 2001
  • Laatst online: 15-11 18:06
Voor een website ben ik bezig om een overzicht te maken van reacties die gepost zijn bij verschillende producten. Deze reacties wil ik in groepen (per product) gesorteerd weergeven en dan het product met de nieuwste post bovenaan.

Met de volgende query krijg ik wel alles mooi in de goede groepen, maar dan komt het product met de nieuwste post niet bovenaan.

SELECT * FROM producten ORDER BY product, datum DESC

DatumProductReactie
11-05-2007AppelBla bla bla bla
16-03-2007AppelBla bla bla bla
02-02-2007AppelBla bla bla bla
01-01-2007AppelBla bla bla bla
31-12-2007PeerBla bla bla bla
02-01-2007PeerBla bla bla bla


Als ik de ORDER BY omdraai krijg ik wel de nieuwst bovenaan, maar niet meer gegroepeerd op product.

SELECT * FROM producten ORDER BY datum DESC, product

DatumProductReactie
31-12-2007PeerBla bla bla bla
11-05-2007AppelBla bla bla bla
16-03-2007AppelBla bla bla bla
02-02-2007AppelBla bla bla bla
02-01-2007AppelBla bla bla bla
01-01-2007PeerBla bla bla bla


Ik heb ook geprobeerd om het met GROUP BY op te lossen, maar dan laat hij ieder product meer een keer zien, wat volgens mij ook logisch is omdat GROUP BY dezelfde resultaten bijelkaar zet.

Voor de duidelijkheid is dit de output die ik wil krijgen.

DatumProductReactie
31-12-2007PeerBla bla bla bla
01-01-2007PeerBla bla bla bla
11-05-2007AppelBla bla bla bla
16-03-2007AppelBla bla bla bla
02-02-2007AppelBla bla bla bla
02-01-2007AppelBla bla bla bla


In de (google)search kon ik er niets over vinden of ik heb met de verkeerde steekwoorden gezocht.

  • Spockz
  • Registratie: Augustus 2003
  • Laatst online: 19-11 13:44

Spockz

Live and Let Live

SQL:
1
SELECT * FROM producten ORDER BY datum, product DESC?
?

Welke MySQL versie heb je?

[ Voor 16% gewijzigd door Spockz op 25-08-2007 13:54 ]

C'est le ton qui fait la musique. | Blog | @linkedin
R8 | 18-55 IS | 50mm 1.8 2 | 70-200 2.8 APO EX HSM | 85 1.8


  • KOICE
  • Registratie: Januari 2001
  • Laatst online: 15-11 18:06
Versie 4.1.21
Spockz schreef op zaterdag 25 augustus 2007 @ 13:53:
SQL:
1
SELECT * FROM producten ORDER BY datum, product DESC?
?
Dan wordt in dit geval wel het product met de nieuwste reactie bovenaan gezet, maar niet omdat daar de reactie nieuw is, maar omdat Peer alfabetisch later komt als Appel. Als er bijvoorbeeld nog een product bij staat met de beginletter D en een reactie die na 31-12-2007 geplaatst is zal die nu niet boven aan komen te staan wat wel de bedoeling is. Dus heelaas niet wat ik zoek.

[ Voor 64% gewijzigd door KOICE op 25-08-2007 14:19 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Dit kan niet met een eenvoudige order by.
Je query zal toch echt een stuk ingewikkelder moeten worden, of misschien is het wel het mooiste te doen aan de hand van 2 queries.
Een andere optie is het introduceren van een lastReactionDate kolom in de producten tabel en vervolgens op lastReactionDate DESC, Datum DESC sorteren. Nadeel is uiteraard dat je met lastReactionDate een redundante kolom toevoegt.

Ik neem overigens aan dat je hier een versimpelde db laat zien en dat je wel aparte tabellen hebt voor reacties en producten. Zo nee, ga dan eerst aan je datamodel werken. ;)

{signature}


  • KOICE
  • Registratie: Januari 2001
  • Laatst online: 15-11 18:06
Ik weet niet of ik je helemaal goed begrepen heb, maar je brengt me wel op een idee.

In de tabel waar de reacties in staan maar ik een rij aan waar ik de datum in zet van de laatste reactie voor een product die vervolgens bij het plaatsen van een reactie voor alleemaal wordt geupdate. Bij het uitlezen kan ik dan op die rij sorteren.

Als het goed is moet dat werken. Het is niet helemaal een nette oplossing, maar ik weet niet hoe ik het anders zou kunnen oplossen.

Dat ga ik vanavond eens proberen. Als iemand anders nog een andere oplossing heeft hoor ik het graag.

Het is inderdaad een versimpelde uitvoering van de database en de producten en reacties staan bijde in een losse tabel.

Edit:

Ik heb het op kunnen lossen door een extra rij aan te maken die wordt geupdate wanneer er een reactie geplaatst word. Op die extra rij sorteer ik nu en krijg de goede volgorde. bedankt allemaal voor de hulp.

[ Voor 22% gewijzigd door KOICE op 25-08-2007 19:09 ]