een beginnersvraag wellicht, echter ik kom er niet uit.
ik heb 3 tabellen:
tabel 1: persons
tabel 2: projects
tabel 3: files
m'n query ziet er als volgt uit:
SELECT persons.name, projects.name, files.name
FROM persons, projects, files
WHERE persons.person_id = projects.person_id
AND projects.project_id = files.project_id
ORDER BY projects.priority ASC, files.priority ASC
aan 1 persoonskaart (in tabel persons) kunnen meerdere projecten hangen (kaarten in tabel projects) en een project kan uit 1 of meerdere files bestaan (kaarten in tabel files). dit werkt prima - iaw ik krijg results - zolang van elke persoon die ik wil opvragen ook tenminste 1 project en per project tenminste 1 file bestaat. echter er zijn situaties waarin nog geen project aan de persoon gekoppeld is of nog geen files aan het project vastzitten. effect is dat ik helemaal geen geen result van deze persoon terugkrijg, terwijl ik op z'n minst de persoonsgegevens uit de tabel persons wil terugkrijgen. momenteel los ik dit probleem op door er altijd voor te zorgen dat bij het aanmaken van een nieuwe persoon ook 1 nieuw project wordt aangemaakt en voor ieder nieuw project 1 nieuwe file. maar dat is erg lelijk en genereert een hoop overbodige records.
hoe kan ik de query veranderen zodat ik altijd de persoonsdata krijg en - indien die er zijn - de projecten en - indien die er ook zijn - de files aan die projecten?
ik heb in de mysql manual lopen zoeken, en heb een vermoeden dat ik iets met een subselect moet doen. onze mysql server zit op 3.23, die ondersteunt dus geen subselects .
ik heb 3 tabellen:
tabel 1: persons
tabel 2: projects
tabel 3: files
m'n query ziet er als volgt uit:
SELECT persons.name, projects.name, files.name
FROM persons, projects, files
WHERE persons.person_id = projects.person_id
AND projects.project_id = files.project_id
ORDER BY projects.priority ASC, files.priority ASC
aan 1 persoonskaart (in tabel persons) kunnen meerdere projecten hangen (kaarten in tabel projects) en een project kan uit 1 of meerdere files bestaan (kaarten in tabel files). dit werkt prima - iaw ik krijg results - zolang van elke persoon die ik wil opvragen ook tenminste 1 project en per project tenminste 1 file bestaat. echter er zijn situaties waarin nog geen project aan de persoon gekoppeld is of nog geen files aan het project vastzitten. effect is dat ik helemaal geen geen result van deze persoon terugkrijg, terwijl ik op z'n minst de persoonsgegevens uit de tabel persons wil terugkrijgen. momenteel los ik dit probleem op door er altijd voor te zorgen dat bij het aanmaken van een nieuwe persoon ook 1 nieuw project wordt aangemaakt en voor ieder nieuw project 1 nieuwe file. maar dat is erg lelijk en genereert een hoop overbodige records.
hoe kan ik de query veranderen zodat ik altijd de persoonsdata krijg en - indien die er zijn - de projecten en - indien die er ook zijn - de files aan die projecten?
ik heb in de mysql manual lopen zoeken, en heb een vermoeden dat ik iets met een subselect moet doen. onze mysql server zit op 3.23, die ondersteunt dus geen subselects .