gegevens uit een andere tabel automatisch aanvullen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pascal Wetzels

Pascal Wetzels

22/02/2013 14:42:35
Quote Anchor link
Ik heb even een vraag.

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
 
PHP hulp

PHP hulp

16/11/2024 04:39:47
 
Erwin H

Erwin H

22/02/2013 14:54:53
Quote Anchor link
Je wil dus gegevens selecteren voor een overzicht? Is dat de vraag? Of wil je bij het invullen van gegevens dat gegevens worden aangevuld?
 
Pascal Wetzels

Pascal Wetzels

22/02/2013 15:25:16
Quote Anchor link
het liefste zou ik zien dat dit bij het invullen gebeurt, bij het overzicht kan ik dit gewoon uit de diverse tabellen selecteren
 
Erwin H

Erwin H

22/02/2013 15:48:27
Quote Anchor link
Bij het invullen moet je helemaal niets doen. De link is al gelegd, die moet je niet dubbel leggen.
 
Ward van der Put
Moderator

Ward van der Put

22/02/2013 16:12:07
Quote Anchor link
Een foreign key alléén is niet voldoende; je moet de koppeling wel nog gebruiken in een join.

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
 
Pascal Wetzels

Pascal Wetzels

25/02/2013 14:30:47
Quote Anchor link
dank je Ward,
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?
 
Ward van der Put
Moderator

Ward van der Put

25/02/2013 14:38:13
Quote Anchor link
Ja, je kunt een JOIN op uiteenlopende manieren uitvoeren over meerdere tabellen. Je kunt bovendien een query binnen een query uitvoeren, zodat de resultaten van de hoofdquery worden beperkt tot resultaten uit een subquery.

Hoe ziet je datamodel er nu precies uit?
 
Pascal Wetzels

Pascal Wetzels

25/02/2013 14:51:00
Quote Anchor link
ik heb 4 tabellen
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?
 
Ward van der Put
Moderator

Ward van der Put

25/02/2013 15:04:14
Quote Anchor link
Kan één hond meerdere geleiders hebben? En kan omgekeerd één geleider meerdere honden hebben?

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?
 
Pascal Wetzels

Pascal Wetzels

25/02/2013 15:16:10
Quote Anchor link
de hond heeft maar één geleider, maar een geleider kan wel meerdere honden hebben.

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?
 
Ward van der Put
Moderator

Ward van der Put

25/02/2013 15:31:07
Quote Anchor link
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).
 
Pascal Wetzels

Pascal Wetzels

25/02/2013 15:40:09
Quote Anchor link
aha,
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?
 
Ward van der Put
Moderator

Ward van der Put

25/02/2013 16:43:01
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.