Hulp nodig bij SQL querie.
Ik ben bezig een data model aan het maken als oefening. In de link vind u de aangemaakte tabellen.
http://stap.iam.hva.nl/~buijs74/sql/index.html
Ik wil graag een querie schrijven die berekent hoeveel klanten een bepaald aantal aankopen heeft gedaan.
De uitkomst waar ik naar op zoek ben is zoiets:
3 klanten - 1 aankoop gedaan
1 klant - 2 aankopen gedaan
1 klant - 3 aankopen gedaan
etc..
Ik dacht dat dit mogelijk was door gebruik te maken van een JOIN.
Ik ben zo ver gekomen, maar krijg steeds een foutmelding.
SELECT verkoop.*, klant.voornaam, klant.achternaam COUNT(klant.ID)
FROM verkoop
INNER JOIN klant
ON verkoop.klant_ID = klant.klant_ID
INNER JOIN schoen
ON verkoop.schoen_ID = schoen.schoen_ID
GROUP BY klant.ID
Wat doe ik fout?
Super bedankt alvast!
Gewijzigd op 09/01/2013 21:02:57 door Stephanie Buijs
3 klanten - 1 aankoop gedaan
1 klant - 2 aankopen gedaan
1 klant - 3 aankopen gedaan
Wat is trouwens je foutmelding?
Ik hoop dat het nu wat duidelijker is.
Dit is de foutmelding:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'COUNT(klant.ID) FROM verkoop INNER JOIN klant ON verkoop.klant_ID = klant.klant' at line 1
Gewijzigd op 09/01/2013 21:14:33 door Stephanie Buijs
dat is omdat er voor die count nog een komma moet.
Maar nu heb ik deze foutmelding:
#1054 - Unknown column 'klant.ID' in 'field list'
Gewijzigd op 09/01/2013 21:18:01 door Albert de Wit
Nog een foutmelding.
#1052 - Column 'klant_ID' in field list is ambiguous
Echt super bedankt dat je me helpt trouwens!!!!!! :)
ik weet dat foutmeldingen van mysql en php niet erg duidelijk zijn...maar het is niet verboden je hersentjes er bij te gebruiken en stukken engelse tekst die je niet begrijpt in google translate te gooien ofzoiets ;)
Gewijzigd op 09/01/2013 21:25:49 door No One
Thnx. Ik ga mn best doen! :)
Stephanie Buijs op 09/01/2013 21:22:34:
Nog een foutmelding.
#1052 - Column 'klant_ID' in field list is ambiguous
#1052 - Column 'klant_ID' in field list is ambiguous
Slaat dat misschien op deze: GROUP BY klant.ID
Stephanie Buijs op 09/01/2013 21:22:34:
Betekent dat MySQL niet weet uit welke tabel het moet komen omdat er meerdere mogelijkheden zijn, ambiguous betekent dat het in meerdere van de genoemde tabellen voorkomt. Oplossing: prefixen met de tabelnaam.Nog een foutmelding.
#1052 - Column 'klant_ID' in field list is ambiguous
#1052 - Column 'klant_ID' in field list is ambiguous
Albert de Wit op 09/01/2013 21:17:44:
klant.ID bestaat niet. klant.klant_ID misschien wel? dit spreekt best wel voor zich :/
@ albert: ik wist ook niet dat je tabelnaam.veld_naam kon doen. Ik deed altijd 1 tabel gebruiken. Dus select user, id, name from...
Tegenwoordig gebruik ik users.user, users.id, users.name,
Zo kan je ook makkelijk gegevens uit een andere tabel halen :)
Kortom: Spreekt niet voorzich :)
Dit soort dingen worden besproken in echt goede tutorials en boeken...kortom: spreekt wel voor zich..daarnaast is mysql gewoon een erg logische taal...oke het woord ambiguous is wellicht een onbekend woord...maar toch...ff google translate en je weet wat de foutmelding wellicht zou kunnen zijn...weet je het antwoord niet, ga je googelen...met alleen maar vragen kom je er ook niet...door te zoeken leer je zoeken en leer je je antwoorden te vinden...ook heel handig...
Waarom join je een tabel (schoen) die je verder helemaal niet gebruikt in de fieldlist?
Waarom selecteer je ALLE kolommen van verkoop terwijl alleen maar hoeft te tellen?
Deze querie laat het aantal aankopen per klant zien:
Code (php)
1
2
3
4
2
3
4
SELECT k.klant_id, k.voornaam, k.achternaam, COUNT(v.klant_id) AS aankopen
FROM klanten AS k
LEFT JOIN verkoop AS v USING (klant_id)
GROUP BY k.klant_id, k.voornaam, k.achternaam
FROM klanten AS k
LEFT JOIN verkoop AS v USING (klant_id)
GROUP BY k.klant_id, k.voornaam, k.achternaam
Deze query laat zien hoeveel klanten een bepaald aantal aankopen heeft gedaan: