[SQL] Orderen op laatste reactie

Gestart doorDylan20 reacties44 weergaven

21 berichten · pagina 1 van 2

Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Hallo,

Ik heb 2 tabellen, tickets en tickets_reacties. Nu wil ik dan de ticket waar het laatst op gereageerd is boven aankomt. Ik weet dat ik dus id en ticketId van tickets_reacties moet ophalen, maar dan wat?
Ik heb nu dit:

Codeblok (voorbeeld.php):

1
2
3
4

SELECT tickets.*, ticket_reacties.id, ticket_reacties.ticketId
FROM tickets
INNER JOIN ticket_reacties
ON tickets.id = ticket_reacties.ticketId

Maar volgens mij klopt daar ook niks van.

Iemand enig idee hoe ik dit kan orderen?
0
Stef

Lid

Berichten
10.150
Reputatie
2
Punten
0,00
Lid sinds
Laatst gezien
Misschien de datum van ticket_reacties ophalen en daar op sorteren?
0
Berichten
3.334
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dylanh schreef:
Hallo,

Ik heb 2 tabellen, tickets en tickets_reacties. Nu wil ik dan de ticket waar het laatst op gereageerd is boven aankomt. Ik weet dat ik dus id en ticketId van tickets_reacties moet ophalen, maar dan wat?
Ik heb nu dit:

Codeblok (voorbeeld.php):
1
2
3
4

SELECT tickets.*, ticket_reacties.id, ticket_reacties.ticketId
FROM tickets
INNER JOIN ticket_reacties
ON tickets.id = ticket_reacties.ticketId

Maar volgens mij klopt daar ook niks van.

Iemand enig idee hoe ik dit kan orderen?

ORDER BY date oid.

toevoeging op 15 januari 2014, 181902:
ORDER BY date kan als je een veld hebt, genaamd date, die MySQL automatisch invoegt, net zoals "auto increment".
0
Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Ik zou het graag op id willen orderen.
0
Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Je bent erg onhandig bezig, maak een veld in de ticket tabel die je bijvoorbeeld datum_update noemt. Bij elke reactie update je gewoon die datum en dan sorteer je daar op. Dan hoef je ook niet met joins te werken.
0
Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Ok ok, ik heb nu dus dat gedaan wat Tim zei, dit werkt heb nu dit:

Codeblok (voorbeeld.php):

1

SELECT * FROM tickets ORDER BY on_updated DESC

Ik wou JOINS gebruiken want dat moet wel kunnen volgens mij.
0
Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dylanh schreef:
Ok ok, ik heb nu dus dat gedaan wat Tim zei, dit werkt heb nu dit:
Codeblok (voorbeeld.php):

1

SELECT * FROM tickets ORDER BY on_updated DESC

Ik wou JOINS gebruiken want dat moet wel kunnen volgens mij.

Dat kan, maar dit is handiger en beter voor de performance. Ik zou geen enkele reden kunnen bedenken waarom je een join zou willen gebruiken.
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Dylanh schreef:
Ok ok, ik heb nu dus dat gedaan wat Tim zei, dit werkt heb nu dit:
Codeblok (voorbeeld.php):

1

SELECT * FROM tickets ORDER BY on_updated DESC

Ik wou JOINS gebruiken want dat moet wel kunnen volgens mij.

Waarom zou je moeilijk doen met joins als je het via een simpele query ook kan uitvoeren?

Trouwens, voor de wat dynamischere systemen zou ik geen field updated_on gebruiken, maar wél met joins werken..
Bijvoorbeeld bij een forum systeem, om in het topic overzicht laatste reactie op te halen.. Want als je de laatste reactie verwijderd, dan moet je dat weer extra gaan updaten in je topic tabel, en dat is heel vervelend. Dan is het wel zo makkelijk om met joins te werken wink
Maar voor wat je nu hebt, laat die joins lekker weg biggrin
0
Berichten
3.334
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Xjessex schreef:
Eerdere citaten tonen
Dylanh schreef:
Ok ok, ik heb nu dus dat gedaan wat Tim zei, dit werkt heb nu dit:
Codeblok (voorbeeld.php):
1

SELECT * FROM tickets ORDER BY on_updated DESC

Ik wou JOINS gebruiken want dat moet wel kunnen volgens mij.

Waarom zou je moeilijk doen met joins als je het via een simpele query ook kan uitvoeren?

Trouwens, voor de wat dynamischere systemen zou ik geen field updated_on gebruiken, maar wél met joins werken..
Bijvoorbeeld bij een forum systeem, om in het topic overzicht laatste reactie op te halen.. Want als je de laatste reactie verwijderd, dan moet je dat weer extra gaan updaten in je topic tabel, en dat is heel vervelend. Dan is het wel zo makkelijk om met joins te werken wink
Maar voor wat je nu hebt, laat die joins lekker weg biggrin
Of je moet tickets kunnen verwijderen.
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
Robiin schreef:
Eerdere citaten tonen
Xjessex schreef:
Eerdere citaten tonen
Dylanh schreef:
Ok ok, ik heb nu dus dat gedaan wat Tim zei, dit werkt heb nu dit:
Codeblok (voorbeeld.php):
1

SELECT * FROM tickets ORDER BY on_updated DESC
Ik wou JOINS gebruiken want dat moet wel kunnen volgens mij.

Waarom zou je moeilijk doen met joins als je het via een simpele query ook kan uitvoeren?

Trouwens, voor de wat dynamischere systemen zou ik geen field updated_on gebruiken, maar wél met joins werken..
Bijvoorbeeld bij een forum systeem, om in het topic overzicht laatste reactie op te halen.. Want als je de laatste reactie verwijderd, dan moet je dat weer extra gaan updaten in je topic tabel, en dat is heel vervelend. Dan is het wel zo makkelijk om met joins te werken wink
Maar voor wat je nu hebt, laat die joins lekker weg biggrin
Of je moet tickets kunnen verwijderen.

Waarom zou je ticket reacties willen verwijderen?
En dan staat de datum maar verkeerd.
0
Berichten
93.699
Reputatie
0
Punten
1,27
Lid sinds
Laatst gezien
@^ik denk dat dat nu even niet relevant is.

Eerst en vooral, als je ticket of ticket reacties verwijderd dan mag je ze niet verwijderen met DELETE, dat is slecht, voeg een rij toe "deleted_at". Daar kun je dan mee verder werken.

overigens is on_updated echt slecht, je moet joinen in je reacties tabel en daar de laatste reactie mee ophalen, en de tijd van dat is dan de laatste reactie-update als het ware.
0
Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Raaoul schreef:
@^ik denk dat dat nu even niet relevant is.

Eerst en vooral, als je ticket of ticket reacties verwijderd dan mag je ze niet verwijderen met DELETE, dat is slecht, voeg een rij toe "deleted_at". Daar kun je dan mee verder werken.

overigens is on_updated echt slecht, je moet joinen in je reacties tabel en daar de laatste reactie mee ophalen, en de tijd van dat is dan de laatste reactie-update als het ware.
Waarom is dat slecht? Ik kan me in deze situatie geen enkele reden bedenken waarom het slecht zou zijn.
0
Rik

Lid

Berichten
18.393
Reputatie
0
Punten
0,04
Lid sinds
Laatst gezien
Kijkend naar een goede normalisatie van een database tabel is een updated_on row slecht.
0
Dylan

Lid · Topicstarter

Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
Kan je ook met 1 query orderen op laatste reactie en zorgen dat status = 1 boven status = 0 komt? Of moet je hiervoor 2 aparte querys hebben?
0
Berichten
4.214
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dylanh schreef:
Kan je ook met 1 query orderen op laatste reactie en zorgen dat status = 1 boven status = 0 komt? Of moet je hiervoor 2 aparte querys hebben?
Kan in een query door middel van een komma

Voorbeeldje: ORDER BY x ASC, y DESC

Nu zet hij eerst field x op volgorde en gaat daarna field y op volgorde zetten. Als je dus van field x de ticket status maakt 0 = onbeantwoord 1= beantwoord 2= gesloten dan ordent hij eerst daarop en veld y zou dan de laatste reactie datum zijn. Dan gaat hij van alles wat bij x 0 had y op volgorde zetten enz.
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren