Toon posts:

[MySQL] Illegal Group By

Pagina: 1
Acties:

Verwijderd

Topicstarter
Het probleem: een query wil niet, omdat ik er blijkbaar een Illegaal Group By statement heb gebruikt. Dus hoe dit op te lossen? Met PHP kan ik het wel oplossen maar dat is natuurlijk niet zo mooi als wanneer het gewoon door MySQL al gebeurt.

De query, reeds werkend:
code:
1
2
3
SELECT opdrachtgever, COUNT(DISTINCT pmc) AS Aantal 
FROM offerte GROUP BY opdrachtgever 
ORDER BY Aantal, opdrachtgever ASC

Hiermee krijg ik een net lijstje van klanten met daarbij het aantal verschillende gebruikte pmc's. Wat ik nu zou willen weten is "Welke opdrachtgevers gebruiken 2 pmc's." Het aantal wordt vantevoren opgegeven, maar dat is verder hier niet van belang.
De query die ik hiervoor had bedacht, was:
code:
1
2
3
SELECT opdrachtgever FROM offerte 
WHERE COUNT(DISTINCT pmc)='2' 
GROUP BY opdrachtgever ORDER BY opdrachtgever ASC


De foutmelding zal dus, logisch geredeneerd, van het WHERE-statement komen. Maar hoe dan wel?
Ik hoop trouwens dat ik de vraag zo een beetje helder heb geformuleerd, ik ben niet bepaald een held in dat soort dingen.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 14-08 12:38

Crazy D

I think we should take a look.

kijk bij HAVING in de manual :) Dat is denk ik wat je zoekt.
HAVING COUNT(...) = 2

Exact expert nodig?


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:02
Je kan afaik niet zomaar
code:
1
count(distinct pmc)

doen in de where clausule.

Wat je wel kunt doen is het volgende:
code:
1
2
3
4
5
select opdrachtgever, count(pmc) as  aantal
from tabel
group by opdrachtgever
having aantal = 2
order by


Zorg er dus ook voor dat er geen quotes staan rond die 2, want het is een numeriek veld, en geen alfanumeriek veld.

https://fgheysels.github.io/


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 21-08 18:29
waarom doe je die 2 tussen '' dat hoeft helemaal niet met een getal, alleen met een string. Een echt antwoord op je vraag zou ik zo niet weten, is dit de enige error die je krijgt?

Verwijderd

Topicstarter
Het werkt nu, allemaal bedankt! _/-\o_

Sja, die '' eromheen is een automatisme, maar inderdaad fout in deze.

[ Voor 11% gewijzigd door Verwijderd op 20-03-2003 16:18 ]