gegevens uit een andere tabel automatisch aanvullen
ik heb in mijn data base 4 tabellen.
nu heb ik door middel van foreign key een aantal velden gekoppeld.
als ik nu in een tabel een keuze maak, had ik graag gezien dat de rest van de gekoppelde velden automatisch wordt aangevuld.
tabellen:
Users:
id
password
geleiders.naam_geleider
Geleider:
idgeleiders
naam_geleider
Hond:
idhond
naam_hond
geleiders.naam_geleider
status:
id
users.idusers
hond.naam_hond
geleiders.naam_geleider
nu wil ik dus bijvoorbeeld als ik in de tabel status de naam_hond kies uit het lijstje dat dan de naam_geleider en idusers automatisch wordt aangevuld
ik hoop dat mijn vraag een beetje duidelijk is zo
Je wil dus gegevens selecteren voor een overzicht? Is dat de vraag? Of wil je bij het invullen van gegevens dat gegevens worden aangevuld?
het liefste zou ik zien dat dit bij het invullen gebeurt, bij het overzicht kan ik dit gewoon uit de diverse tabellen selecteren
Bij het invullen moet je helemaal niets doen. De link is al gelegd, die moet je niet dubbel leggen.
Als je bijvoorbeeld deze twee tabellen hebt:
geleiders (
geleider_id
naam_geleider
)
honden (
hond_id
naam_hond
geleider_id
)
kun je zó de geleidersnaam bij elke hond tonen:
SELECT
naam_hond,
naam_geleider
FROM
honden
LEFT JOIN
geleiders
ON
honden.geleider_id = geleiders.geleider_id
ORDER BY
naam_hond ASC
ik heb de tabellen juist aangepast, maar nu heb ik nog een vraagje, die JOIN kan maar voor 1 tabel?
zoals hierboven, tussen hond en geleider, maar nu wil ik tussen status en geleider en tussen status en hond ook een JOIN, maar hoe doe je dat dan?
Hoe ziet je datamodel er nu precies uit?
tabel users (idusers, user, password,idgeleiders)
tabel geleiders (idgeleiders, naam_geleider)
tabel hond (idhond, naam_hond, idgeleiders, groep)
tabel status (id, idusers,idgeleiders, idhond, status)
de bedoeling is dat ik gegevens uit de tabel status ga weergeven van de desbetrefende hond.
dus de naam van de hond, de naam van de geleider en de status
is dit voldoende informatie?
Uit tabel hond (idhond, naam_hond, idgeleiders, groep) leid ik af dat één hond één geleider heeft, anders hoort de foreign key idgeleiders niet in deze tabel.
Of wil je voor relatie tussen honden en geleiders de tabel status gebruiken?
de geleider logt in op de pagina en kan (als hij/zij meerdere honden heeft, een keuze maken uit de honden) dan zien wat de status van de trainingen met de bijbehorende hond is.
aan de hand van idusers haal ik dan de gegevens op die horen bij de geleider. (als deze meerdere honden heeft, zal er nog en keuze worden gemaakt uit de honden door middel van idhond)
als ik het goed zie kan ik idgeleiders weg laten uit de tabel status?
Ja, als één hond altijd één geleider heeft, kun je de status beperken tot de hond: via de hond vind je dan namelijk zijn geleider. Nadat de geleider heeft ingelogd (en dus zijn id bekend is), krijg je dan een eenvoudige JOIN tussen de tabel hond en de tabel status (met een WHERE waarin je de unieke idgeleiders gebruikt om de selectie te beperken).
dus ik zat weer veel te diep te graven?
de foreign keys kan ik gewoon laten staan? of is het beter deze ook te verwijderen?
Dat hangt ervan af hoe streng je de foreign key hebt gedefinieerd, maar voor de zekerheid kun je eerst de overbodige index verwijderen en daarna pas de overbodige kolom.