Ik ben bezig met een MySQL join, maar wil daarin ook kunnen sorteren op een bepaalde inhoud van zaken. Nu werkt alles behalve dan dat hij alles door elkaar zet in plaats van te sorteren.
Wat doe ik fout? En hoe zou ik dat kunnen oplossen?
SELECT l.id AS lidID, l.adres, l.voornaam, l.tussenvoegsel, l.achternaam, a.naam AS adresNaam, a.nummer, a.postcodeA, a.postcodeB, a.plaats, p.id, p.naam AS plaatsNaam, l.reg_time, l.email, l.geboortedatum, l.telefoon, l.geslacht
FROM leden l, adressen a, plaats p, groep_leden gp
WHERE
a.id = l.adres
AND p.id = a.plaats
".$QuerlieSelectie."
".$QuerlieUniekAdres."
ORDER BY l.achternaam ASC
SELECT l.id AS lidID, l.adres, l.voornaam, l.tussenvoegsel, l.achternaam, a.naam AS adresNaam, a.nummer, a.postcodeA, a.postcodeB, a.plaats, p.id, p.naam AS plaatsNaam, l.reg_time, l.email, l.geboortedatum, l.telefoon, l.geslacht
FROM leden l, adressen a, plaats p, groep_leden gp
wat komen ".$QuerlieSelectie." en ".$QuerlieUniekAdres." daar plots tussen doen? Zijn dat nog extra WHERE statements, dan zou ik die toch anders invullen.
Verder is er niets mis met de query voor zover ik kan zien...
Die ".$QuerlieSelectie." is een extra WHERE statement, bij ".$QuerlieUniekAdres." wordt eventueel een group by functie er bij gezet.
Dit komt omdat de gebruiker heel veel mogelijkheden heeft wat betreft de keuzes wat hij/zij wel of niet wil hebben en op welke manier dat moet gebeuren.
EDIT:
Ik heb hem nu iets aangepast maar ook zo werkt hij niet. Heeft echt niemand een oplossing? Wordt er ondertussen behoorlijk kippig van .
SELECT l.id AS lidID, l.adres, l.voornaam, l.tussenvoegsel, l.achternaam, a.naam AS adresNaam, a.nummer, a.postcodeA, a.postcodeB, a.plaats, p.id, p.naam AS plaatsNaam, l.reg_time, l.email, l.geboortedatum, l.telefoon, l.geslacht, l.lid_code, l.bezorg_code, l.opmerking, l.voorletters
FROM leden l, adressen a, plaats p, groep_leden gp
WHERE
a.id = l.adres
AND p.id = a.plaats
GROUP BY l.id
ORDER BY 'l.achternaam'
LIMIT ".$start.",".$showRecords
SELECT l.id AS lidID, l.adres, l.voornaam, l.tussenvoegsel, l.achternaam, a.naam AS adresNaam, a.nummer, a.postcodeA, a.postcodeB, a.plaats, p.id, p.naam AS plaatsNaam, l.reg_time, l.email, l.geboortedatum, l.telefoon, l.geslacht, l.lid_code, l.bezorg_code, l.opmerking, l.voorletters
FROM leden l, adressen a, plaats p, groep_leden gp
SELECT l.adres, l.voornaam, a.naam, a.nummer FROM leden l JOIN plaats p ON l.voornaam = a.naam WHERE .. etc
SELECT l.adres, l.voornaam, a.naam, a.nummer FROM leden l JOIN plaats p ON l.voornaam = a.naam WHERE .. etc
Op deze manier kun je beter een JOIN-query opbouwen (als ik het goed heb, het is alweer een tijdje geleden dat ik ze gebruikt heb). Ook is sinds PHP 4.x.x. o.i.d. het mogelijk subqueries te gebruiken binnen je huidige query. Voor meer informatie kun je natuurlijk even googlen!