Door
Joni Fleischer
op 29-09-2015 22:20
gewijzigd op 30-09-2015 00:09
3.082 views
Hallo allemaal,
Ik heb de volgende query:
$sql = "
SELECT
r.ID,
r.retour_nr,
c.name,
c.contact,
c.email
FROM
retouren AS r
INNER JOIN
clients AS c
ON c.ID = r.contact
GROUP BY
r.retour_nr
";
Maar dan krijg ik:
Regel: 47
Bestand: /****/returns/returns.php
Foutmelding: SQLSTATE[42000]: Syntax error or access violation: 1055 'fleischer_grund.r.ID' isn't in GROUP BY
Hoe kan ik mijn output laten groupen op r.retour_nr?
Hier alle *Juiste* informatie. @Ivo: Je hebt gelijk :)
CLIENTS
CREATE TABLE IF NOT EXISTS `clients` (
`ID` int(20) NOT NULL,
`name` varchar(255) NOT NULL,
`contact` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL
)
ID: uniek ID nummer klant
name: Bedrijfsnaam klant
contact: Naam contact persoon
RETOUREN
CREATE TABLE IF NOT EXISTS `retouren` (
`ID` int(20) NOT NULL,
`retour_nr` varchar(255) NOT NULL,
`contact` int(10) NOT NULL,
`item` varchar(15) NOT NULL,
`amount` int(10) NOT NULL
)
ID: uniek ID voor selecteren op row niveau (niet belangrijk)
RETOUR_NR: is dus de "reference" van een retour opdracht
CONTACT: Uniek ID nummer van de klant
ITEM: is het artikelnummer van een product
AMOUNT: is het aantal van het desbetreffende product.
Nu al iets duidelijker?
Sorry als dat eerst niet zo was.
@Jan de Laet
Je bent een held!!!
Dat bedoelde ik dus! :)
@IVO
Je hebt gelijk, is zeker wel beter. Maar dan heb ik weer een extra tabel die ik moet joinen....
Een client kan trouwens meerdere contact personen hebben per bedrijf.
Dus dan zou ik dat ook weer moeten opsplitsen. Ik krijg een excel met klantgegevens aangeleverd in excel die ik importeer.....
Toch nog laatste vraag:
Hoe kan ik nou de DATA opvragen van ID?
Dat is namelijk het unieke nr per row. (voor informatie per product...)
Die kan ik dus niet zomaar in de SELECT qry zetten?
De kosten van een extra regeltje in je query (join retouritems)
zijn natuurlijk maar beperkt tov. de enorme kosten die je maakt door de veel te grote resultsets waarin je met distinct of group by vervolgens weer moet gaan snijden om geen dubbelen binnen te krijgen.
"dan heb ik weer een extra tabel die ik moet joinen" is dan mi. ook geen argument.
Er zijn zat situaties waar je mogelijk wel 10 tabellen joint om een resultaat op te halen. So be it.
Met een tekening van je database ernaast moet dat ook geen probleem zijn.