Nu wil ik alleen nog dat de namen op alfabetische volgorde worden weergeven. Ik kan het niet meer in de query doen, want daar zit al een ORDER BY in, en ook niet met de phpfunctie sort(), want ik voer een while loop uit.
Wie kan mij helpen om de namen in alfabetische volgorde te laten zien?
Uiteraard kun je ook sorteren met PHP, maar dat is vrij omslachtig. Je kunt dat veel sneller in de database doen, die is gemaakt voor dit soort dingen.
Maar zit je echt met handen en voeten gebonden aan MySQL? Al dit gekloot is namelijk nergens voor nodig. Stap gewoon over op pgSQL en vele problemen verdwijnen als sneeuw voor de zon.
15000 regels code zegt niks, zeker niet als je een database classe gebruikt en je netjes SQL gebruikt volgens de ANSI-standaard. Dan zul je hooguit hier en daar een database-functie even moeten aanpassen (namen willen nog wel eens verschillend zijn) en klaar ben je.
En mocht je honderden keren bv. mysql_query() in je code hebben staan, met een zoek-en-vervang heb je daar in enkele secondes pg_query() van gemaakt... Met een uurtje moet je dit wel kunnen omzetten naar pgSQL.
SELECT
ID,
naam,
bestand,
bestandstype,
toegevoegd
FROM
spellen
WHERE
ID in(select id FROM
spellen
WHERE
categorie = 'Avontuur'
ORDER BY toegevoegd desc
LIMIT 0, 10)
ORDER BY naam
Trek hier de subquery uit:
select id FROM
spellen
WHERE
categorie = 'Avontuur'
ORDER BY toegevoegd desc
LIMIT 0, 10
Voer deze query (!) uit en ga het resultaat fetchen. Van dit resultaat maak je een mooie string zoals bv. dit: 23, 248, 447, 834
Pak vervolgens de rest van de oorspronkelijke query:
SELECT
ID,
naam,
bestand,
bestandstype,
toegevoegd
FROM
spellen
WHERE
ID in()
ORDER BY naam
Allemachtig! Dat is nogal een lap code/SQL voor iets simpels. 23 queries voor iets wat je met 1 query kunt doen...
Wat ben ik toch blij met pgSQL!
Ik ga denk ik wel een keer de overstap maken, maar ik moet toch een tijdelijke oplossing hebben. Als jij wat beters weet (zonder pgSQL), zeg het dan maar :)