login  Naam:   Wachtwoord: 
Registreer je!
 Forum

moeilijke query

Offline pj_muller00 - 12/11/2006 11:15
Avatar van pj_muller00PHP interesse Beste ik heb een tamelijk ingewikkelde query nodig maar het lukt me niet om ze te schrijven.

Hier is de situatie.

- tabel members met veld id en points
- tabel alliantie met id
- tabel alliantie_members met personid en alliantie_id

Nu zou ik een overzicht moeten hebben van de allianties maar gesorteerd (DESC) volgens het aantal opgetelde punten van de spelers.

Dit heb ik er van gemaakt
:
SELECT alliantie.id,name,label,created,personid,SUM(points)
FROM alliantie,members,alliantie_members
WHERE alliantie_id = alliantie.id AND members.id = alliantie_members.personid ORDER BY points DESC;

Maar dan geeft hij deze error :

Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause

Alvast bedankt,
Pj 

3 antwoorden

Gesponsorde links
Offline Stefan14 - 12/11/2006 11:37
Avatar van Stefan14 PHP gevorderde je moet bij je FROM al je tabellen een alias meegeven door middel van AS
dus bijv.
  1. alliantie AS all

en dit dan voor alledrie de tabellen.

Daarna kun je in de select de kolommen selecteren als all.id,all.name enz.
want nu geef je niet aan uit welke tabel de kolommen moeten komen, alleen bij de eerste probeer je dat.

En daarna doe je in de Where clause precies hetzelfde, daar moet je ook aangeven uit welke tabel de kolommen komen.
dus bijv.
  1. all_m.alliantie_id = all.id


Zorg wel dat de aliassen van de tabelnamen verschillend zijn van de originele tabelnamen om conflicten te voorkomen zoals ik nu bijv. gedaan heb met alliantie in all te veranderen.
Offline Ultimatum - 12/11/2006 11:38
Avatar van Ultimatum PHP expert dingen zoals MIN(), MAX() etc.. kunnen alleen gebruikt worden in combinatie met GROUP BY en jij hebt ORDER BY, maar volgens mij krijg je weer helemaal wat anders als je ORDER BY vervang voor GROUP BY
Offline pj_muller00 - 12/11/2006 12:00
Avatar van pj_muller00 PHP interesse
Citaat:
Daarna kun je in de select de kolommen selecteren als all.id,all.name enz.
want nu geef je niet aan uit welke tabel de kolommen moeten komen, alleen bij de eerste probeer je dat.


Dit moet toch enkel als de kolom niet uniek is ... aangezien created niet in de andere voorkomt hoef ik het toch niet te specifieren ?

En het is trouwens al opgelost hoor 

Moest gewoon een group by alliantie.id voor de order by  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.187s