login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Mysql : Group By + Order

Offline HOND_NL - 04/10/2007 13:32 (laatste wijziging 04/10/2007 16:59)
Avatar van HOND_NLNieuw lid Dag mensjes ,
Ik ben mezelf ongeveer aan het opvreten met het volgende probleem :


Ik heb een tabel die er ongeveer als volgt uitziet ;


id titel name added(unixtime)


In deze tabel worden via curl/cronjobs gegevens geplaatst van de laatste Tv Series.

VB tabel :
id titel Naam added
96 Journeyman.S01E01.720p.HDTV.x264-HDQ Journeyman 1191438612


Nou hebben dus meerdere rijen de zelfte NAME , ik wil dus eigenlijk uit de DB hebben

Elke NAME , maar 1 maal , gesorteerd op added ( datum) met het aantal rijen die naam nog meer hebben

SELECT * count(*) as count FROM crawl_tv WHERE found ='yes' GROUP BY name ORDER BY added DESC

Het probleem : hij zoekt met die group by naam natuurlijk op alfabet , dus de eerste naam die hij tegenkomt ( en waarvan hij de rij neemt ) is dus niet de laatste toegevoegde serie.

Welke query zou ik anders kunnen nemen ?

ALvast bedankt jongens,
- Paolo

Update:
Opgelost , je kan dus wel in een query dit voor elkaar krijgen

Ik had eerst
SELECT titel, name, added
FROM crawl_tv s1
WHERE added=(SELECT MAX(s2.added)
FROM crawl_tv s2
WHERE s1.name = s2.name ) ORDER BY added DESC

maar dan kreeg ik count er niet meer tussen dus nu is het :

SELECT name,titel, MAX(added) AS added ,count(name) as count
FROM crawl_tv
GROUP BY name ORDER BY added DESC

4 antwoorden

Gesponsorde links
Offline Thomas - 04/10/2007 14:32
Avatar van Thomas Moderator Ik weet niet of je in één query op twee dingen kunt groupen (COUNT(id), MAX(added)), maar dat zou je kunnen proberen:

SELECT id, titel, name, COUNT(id), MAX(added)
FROM table
GROUP BY name
ORDER BY added DESC

ofzo...

Anders 2 queries?
Offline HOND_NL - 04/10/2007 14:44 (laatste wijziging 04/10/2007 15:37)
Avatar van HOND_NL Nieuw lid Dank je voor je antwoord

Die max heb ik idd geprobeerd , veranderd de zaak helaas niet..
IK moet op een andere manier dingen grouperen denk ik :S
En met 2 queries?? zou je een voorbeeld kunnen geven ?

Even voor de duidelijkheid

ZOals het moet worden later
http://www.releaseseek.org/releasecrawler/series/


Standaard query gesorteerd op TIJD zoals de volgorde moet zijn:
JE kan hier het veschil zien , heb snel even een formpje toegevoegd zodat je kan testen , HELLUP! 
http://www.rele...s/help.php

dan zie je het verschil...

Citaat:
Rens edit:
Je hoeft geen stukken tekst in bold te zetten...
Offline Thomas - 04/10/2007 15:33
Avatar van Thomas Moderator Hm, die added in MAX hoeft trouwens niets met dat record te maken te hebben bedenk ik me net.

Probeer anders eens ORDER BY name, added DESC ofzo... anders zul je een subquery of tweede query uit moeten voeren. Met meerdere queries zal het sowieso lukken.
Misschien is het verstandig je database iets anders op te zetten, waarin één item (name) meerdere versies (added) heeft ofzo, dat zou eea makkelijker maken.
Offline HOND_NL - 04/10/2007 15:44
Avatar van HOND_NL Nieuw lid Ik had al gedacht een externe tabel te maken , maar gezien deze zeer groot zullen worden zal hij dus twee hele tabellen moeten doorzoeken , wat de server meer pijn zal doen.

Zou je een voorbeeld kunnen maken hoe je die met twee queries ( of union ) zou kunnen bewerkstelligen ?
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.161s