login  Naam:   Wachtwoord: 
Registreer je!
 Forum

GROUP BY wilt geen HAVING doen

Offline Sc0tTy - 16/06/2006 11:31
Avatar van Sc0tTyPHP interesse ik heb de volgende query

  1. SELECT
  2. SUM(fact_prijs),
  3. COUNT(*),
  4. fact_jaar
  5. FROM
  6. efgee_facturen
  7. GROUP BY
  8. fact_jaar
  9. HAVING
  10. klant_id = ?


waar bij de ? word gereplaced, maar om een of andere reden beweert hij dat klant_id niet bestaat , wat ik echt raar vind ::

  1. ERROR :: An error occured while performing the query ::
  2. SELECT SUM(fact_prijs), COUNT(*), fact_jaar FROM efgee_facturen GROUP BY fact_jaar HAVING klant_id = 9
  3.  
  4. Unknown column 'klant_id' in 'having clause'

weer iemand wat ik fout doe ?

9 antwoorden

Gesponsorde links
Offline marten - 16/06/2006 11:41
Avatar van marten Beheerder en bestaat ie wel dan? Geen typfoutje bij het maken van de tabel?
Offline Sc0tTy - 16/06/2006 11:43
Avatar van Sc0tTy PHP interesse nope dat heb ik al 100x nagekeken , daarom snap ik het ook niet 
Offline roelh - 16/06/2006 11:44 (laatste wijziging 16/06/2006 11:44)
Avatar van roelh PHP gevorderde Voer de query eens uit in phpmyadmin.
en doe eens dit met mysql_error erachter

  1. "SELECT
  2. SUM(fact_prijs),
  3. COUNT(*),
  4. fact_jaar
  5. FROM
  6. efgee_facturen
  7. GROUP BY
  8. fact_jaar
  9. HAVING
  10. klant_id = ?" or die (mysql_error());
Offline Sc0tTy - 16/06/2006 12:02 (laatste wijziging 16/06/2006 12:03)
Avatar van Sc0tTy PHP interesse mjah dan krijg ik de zelfde error ;) die error die je ziet is mysql_error(); + kgebruik geen phpmyadmin ,
Offline roelh - 16/06/2006 12:06
Avatar van roelh PHP gevorderde Wat gebruik je dan?
Je kunt in dat andere progje dan ook query's testen?
Offline Sc0tTy - 16/06/2006 12:07 (laatste wijziging 16/06/2006 12:08)
Avatar van Sc0tTy PHP interesse mjah ik heb de oplossing al 

  1. SELECT
  2. SUM(fact_prijs),
  3. COUNT(*),
  4. fact_jaar
  5. FROM
  6. efgee_facturen
  7. WHERE
  8. klant_id = ?
  9. GROUP BY
  10. fact_jaar

ik dacht dat je bij een GROUP BY geen WHERE mocht gebruiken, maar dit mag wel zolang deze er maar voorstaat, had ik over het hoofd gezien, topic mag worden gesloten 


EDIT :: De ops kunnen deze tutorial maar beter wijzigen dan, want de HAVING function werkt niet zo
http://www.site...amp;id=254
Offline Thomas - 16/06/2006 13:06
Avatar van Thomas Moderator Mja, als het een specifiek klant-id is, kun je dit prima in een WHERE-conditie zetten.

Volgens mij was HAVING meer bedoeld om berekende gegevens (in je resultaatset) te vergelijken met een bepaalde waarde, bijvoorbeeld:

  1. SELECT familie_id, COUNT(familielid_id) AS aantal_familieleden
  2. FROM familie_leden
  3. GROUP BY familie_id
  4. HAVING aantal_familieleden > 2


Geeft (als het goed is - niet getest) een lijst met families die elk bestaan uit meer dan 2 familieleden. Het zijn als het ware extra condities die je stelt aan het resultaat - een soort van extra filter.
Offline Frisbee - 16/06/2006 14:30
Avatar van Frisbee HTML beginner Maar wat is dan het verschil met WHERE:

  1. SELECT familie_id, COUNT(familielid_id) AS aantal_familieleden
  2. FROM familie_leden
  3. WHERE aantal_familieleden > 2
  4. GROUP BY familie_id


Dan krijg je toch hetzelfde resultaat?
Offline Thomas - 16/06/2006 14:57
Avatar van Thomas Moderator Volgens mij kun je een alias niet gebruiken in een WHERE-conditie.

Ik denk dat het als volgt zit:
WHERE werkt op de gegevens-set.
HAVING werkt op de resultaat-set van de query. Het is een soort sorteer/filter-mechanisme achteraf.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.213s