Toon posts:

MYSQL - opslaan in een tijdelijke table

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hallo,

ik heb een probleem en ik geraak er niet uit (en ik hoop dat jullie me kunnen helpen :P)

Ik wil dus de volgende query uitvoeren:

code:
1
2
3
4
5
6
SELECT O.Naam, O.Door AS O_Door, UNIX_TIMESTAMP(O.Datum) AS O_Datum, R.Door AS R_Door, MAX(UNIX_TIMESTAMP(R.Datum)) AS R_Datum
FROM `forum_onderwerpen` AS O
LEFT JOIN `forum_reacties` AS R ON (O.Id = R.Super)
WHERE O.Zichtbaar = '1' 
GROUP BY O.Naam
LIMIT 5


maar deze worden nu gesorteerd op O.Naam, is er nu geen mogelijkheid om het resultaat te gebruiken in een nieuwe query en daar dan te ordenen op R_Datum?

Ik had in mijn gedachten om deze select op te slaan in een tijdelijke tabel ofzo en dan een order by te doen op die tabel, is dit mogelijk?

[ Voor 11% gewijzigd door Verwijderd op 11-12-2008 11:25 ]


Acties:
  • 0 Henk 'm!

  • leuk_he
  • Registratie: Augustus 2000
  • Laatst online: 15-07 15:35

leuk_he

1. Controleer de kabel!

Order by

PS: hoewel group by normaal gesproken de sortering bepaald is dit niet gedrag dat in de toekomst gegarandeerd zo is.

Need more data. We want your specs. Ik ben ook maar dom. anders: forum, ff reggen, ff topic maken
En als je een oplossing hebt gevonden laat het ook ujb ff in dit topic horen.


Acties:
  • 0 Henk 'm!

  • Luqq
  • Registratie: Juni 2005
  • Laatst online: 24-09 15:48
Je selecteert R_Datum ook niet? Alleen het maximum, en die is dus elke keer hetzelfde?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja sorry ik had er nog wat uitleg moeten bijgeven

dit is dus een query voor een klein forumpje, ik wil een onderwerp (Naam, Door en datum) selecteren met de laatst geposte reactie(Door, Datum). Dit wil ik dan weergeven op een overzichtspagina en dus sorteren. Hierbij moet het onderwerp met de laatste reactie bovenaan staan en die genen met een latere reactie eronder.

Met deze query heb ik het al voor een heel groot deel maar het enige probleem is dat hij de onderwerpen sorteert op Naam en niet op de datum.

Ik hoop dat het duidelijk is want ik vind dat het moeilijk is iets uitleggen aan iemand anders dat je zelf hebt bedacht (Met je eigen rare gedachtenkronkels :P).

Acties:
  • 0 Henk 'm!

  • Psychokiller
  • Registratie: Oktober 2001
  • Niet online
Als je de laatste 5 op basis van de datum wilt, waarom sorteer je daar dan niet op ?
Verder is je group by incompleet. Hoewel MySQL dat pikt, krijg je niet gegarandeerd de velden die jij verwacht te krijgen.

Door wie de laatste reactie is gepost zul je waarchijnlijk met een subselect in je select op moeten halen. (select Door from ... order by datum desc limit 1)

Edit: Wat heeft de titel van dit topic trouwens met het onderwerp te maken ?

[ Voor 9% gewijzigd door Psychokiller op 10-12-2008 21:19 ]


Verwijderd

Topicstarter
sorry,

weer iets dat ik vergeten ben, ik had al in mijn gedachten om de select hierboven op te slaan in een tijdelijke tabel ofzo om dan daarop een order by te doen zodat alles wel goed is geordend.

Door de subselect is het me gelukt
code:
1
2
3
4
5
6
SELECT DISTINCT O.Id, O.Naam, O.Door AS O_Door, O.Datum, (SELECT Datum FROM `forum_reacties` WHERE Super = O.Id ORDER BY Datum LIMIT 1) AS R_Datum, (SELECT Door FROM `forum_reacties` WHERE Super = O.Id ORDER BY Datum LIMIT 1) AS R_Door 
FROM `forum_onderwerpen` AS O
LEFT JOIN `forum_reacties` AS R ON (O.Id = R.Super)
WHERE O.Zichtbaar = '1' AND O.Super = '1'
ORDER BY R_Datum DESC
LIMIT 5


Bedankt Psychokiller voor het idee

en nogmaals sorry voor de misverstanden

[ Voor 54% gewijzigd door Verwijderd op 11-12-2008 11:38 ]

Pagina: 1