tabellen joinen
Ik heb even een vraagje..
Ik ben bezig met een site voor mezelf waarbij ik verschillende tabellen moet koppelen. Op de site staan auto's. Ik wil dus de tabel 'auto' koppelen met bijv. 'kleur', 'transmissie', 'opties' ed.
Het ziet er zo uit:
Is het mogelijk met deze database om bijv. een kleur te halen uit 'kleuren' en een merk uit 'merken'?
Dan moet je wel de functions aanmaken.
Okee okee nice ik heb nog een vraag.. In de opties tabel zitten velden die ik laat zien als checkboxjes (elektrische ramen, panorama dak etc.) Hoe koppel ik meerdere checkboxjes aan 1 auto en hoe zet ik deze meerdere checkboxen weg in de database?
auto_kleuren
------------
auto_id
kleur_id
p.s. mag ik vragen wat voor editor je gebruik voor je database ?
Gewijzigd op 06/02/2016 20:50:37 door Dennis WhoCares
https://dev.mysql.com/doc/workbench/en/wb-creating-eer-diagram.html
Gewijzigd op 06/02/2016 23:16:20 door Erwin van Hoof
Najib bijan op 06/02/2016 19:58:40:
Is het mogelijk met deze database om bijv. een kleur te halen uit 'kleuren' en een merk uit 'merken'?
Jaaaa, dat juist de kracht van een database. Om in één keer gegevens uit meerdere gekoppelde tabellen te halen moet je gebruik maken van een SELECT met één of meerdere JOINs. Deze tut laat je zien hoe je joins toepast: http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Daarnaast bestaat er ook nog zo iets als een achterliggende reden voor je database indeling. Er moet wel een reden zijn waarom je een nieuwe tabel aanmaakt. Als ik naar jouw ontwerp kijk dan denk ik dat je in de meeste gevallen de gebruiker een dropdown wilt voorschotelen met bijvoorbeeld een aantal kleuren waaruit hij dan kan kiezen. Je moet daarvoor dus een lijstje met kleuren hebben. En wellicht wil je dat de admin op de achterkant van de website nog een kleurtje aan de lijst kan toevoegen.
Frank Nietbelangrijk op 07/02/2016 09:28:31:
Jaaaa, dat juist de kracht van een database. Om in één keer gegevens uit meerdere gekoppelde tabellen te halen moet je gebruik maken van een SELECT met één of meerdere JOINs. Deze tut laat je zien hoe je joins toepast: http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Daarnaast bestaat er ook nog zo iets als een achterliggende reden voor je database indeling. Er moet wel een reden zijn waarom je een nieuwe tabel aanmaakt. Als ik naar jouw ontwerp kijk dan denk ik dat je in de meeste gevallen de gebruiker een dropdown wilt voorschotelen met bijvoorbeeld een aantal kleuren waaruit hij dan kan kiezen. Je moet daarvoor dus een lijstje met kleuren hebben. En wellicht wil je dat de admin op de achterkant van de website nog een kleurtje aan de lijst kan toevoegen.
Najib bijan op 06/02/2016 19:58:40:
Is het mogelijk met deze database om bijv. een kleur te halen uit 'kleuren' en een merk uit 'merken'?
Jaaaa, dat juist de kracht van een database. Om in één keer gegevens uit meerdere gekoppelde tabellen te halen moet je gebruik maken van een SELECT met één of meerdere JOINs. Deze tut laat je zien hoe je joins toepast: http://www.sitepoint.com/understanding-sql-joins-mysql-database/
Daarnaast bestaat er ook nog zo iets als een achterliggende reden voor je database indeling. Er moet wel een reden zijn waarom je een nieuwe tabel aanmaakt. Als ik naar jouw ontwerp kijk dan denk ik dat je in de meeste gevallen de gebruiker een dropdown wilt voorschotelen met bijvoorbeeld een aantal kleuren waaruit hij dan kan kiezen. Je moet daarvoor dus een lijstje met kleuren hebben. En wellicht wil je dat de admin op de achterkant van de website nog een kleurtje aan de lijst kan toevoegen.
Oke oke mooi. Juist! Dat is precies wat ik nodig heb. Het moet dus mogelijk zijn om een auto in te voegen in de database deze auto moet inderdaad bijv. een kleur hebben die de admin uit een dropdown kan toewijzen. ik zal de tut goed bestuderen want wat jij beschreef heb ik nodig. Heb je misschien nog een tip/tips voor me. Hoe doe ik dat met die checkboxen bijvoorbeerd?
Maar je hebt opties bijv. elektrische ramen en schuifdak:
tabel optie:
– id
– omschrijving
Welnu: een auto moet meerdere opties kunnen bevatten en een optie moet ook voor meerder autos kunnen gelden. Je hebt dan een many-to-many relatie nodig. Deze many-to-many creëer je door een koppeltabel toe te voegen:
tabel: auto_optie:
-auto_id
–optie_id
Voorbeeld:
tabel auto:
id bouwjaar
1 2005
2 2013
tabel optie:
id omschrijving
1 Elektrische ramen
2 Schuifdak
tabel: auto_optie:
auto_id optie_id
1 1
1 2
2 1
Auto 1 heeft dus elektrische ramen en een schuifdak. Auto 2 heeft alleen elektrische ramen.
Toevoeging op 07/02/2016 19:30:24:
Met joins kun je simpel alle opties voor een auto uit de database trekken maar ook alle auto's die een bepaalde optie hebben. Je kunt de gebruiker dus opties laten selecteren en dan de auto's tonen die aan die opties voldoen.
Voorbeeld om de auto's met elektrische ramen uit de database te trekken:
Code (php)
1
2
3
4
2
3
4
SELECT a.id, a.bouwjaar, o.omschrijving FROM auto a
JOIN auto_optie ao ON a.id = ao.auto_id
JOIN optie o ON o.id = ao.optie_id
WHERE o.id=1
JOIN auto_optie ao ON a.id = ao.auto_id
JOIN optie o ON o.id = ao.optie_id
WHERE o.id=1
Gewijzigd op 07/02/2016 19:18:17 door Frank Nietbelangrijk