Nu dienen deze tabellen natuurlijk dmv JOIN opgehaald te worden. Het probleem is dat de auto's meerder kleuren kunnen hebben, anders was het een simpele JOIN als:
SELECT
2.merk,
1.kleur,
FROM
tabel1 AS 1
INNER JOIN
kleuren AS 2
ON 2.id = 1.kleur_id
Je hoeft niet altijd te joinen. Je kunt ook gewoon meerdere tabellen selecteren. Met één extra WHERE-eis kun je dan ook al de juiste data selecteren.
SELECT a.kleur, b.merk
FROM tabel1 AS a,
tabel2 AS b
WHERE
a.id = b.kleur_id;
Dat werkt niet. De kleur_id moet vervangen worden door de namen van kleuren zelf, en dat gebeurt op deze manier niet. De WHERE werkt ook alleen als een auto maar 1 kleur heeft en de kleur_id dus bestaat uit in cijfer.
@Jezpur: ook dat is een JOIN, en wel een INNER JOIN. Het is alleen een andere (minder duidelijke) schrijfwijze.
@KrissCross: je werkt met een incorrect datamodel, daardoor wordt het onmogelijk om een correcte JOIN uit te voeren. Je kunt nooit meerdere gegevens in 1 veld opslaan zoals jij nu wel doet. Kan een merk meerdere kleuren hebben, dan zul je gebruik moeten maken van een koppeltabel.
Ga normaliseren en zorg allereerst dat je datamodel correct is. Dan pas kun je over de joins gaan nadenken.
Even offtopic, is er een goede uitleg over Joins? Zelf ben ik er niet zo bekend mee, enkel de join manier die Jezpur hierboven gaf. De tutorial hier op PHPhulp snap ik niet zo goed.
Oefenen en proberen :), normaliseren is stap 1, zoals Blanche aangeeft, je zult een koppeltabel moeten maken, zodat meerdere auto's meerdere kleuren kunnen hebben (dus een veel-op-veel-relatie).
Meer tabellen is niet trager of slechter, met dat in het achterhoofd en goede wil moet je een eind kunnen komen.
Allereerst zou ik de tabelnaam APK veranderen in iets zinvollers, bijvoorbeeld 'automerken_kleuren' oid. Op die manier weet je direct aan de naam dat je met een koppeltabel te maken hebt.
Verder is de kolom APK_id in die tabel overbodig. De kolommen merk_id en kleur_id vormen samen de PK in die tabel, daar heb je niets extra's voor nodig.
Nu wil ik dmv JOIN alle teams weergeven met de daarbij behorende kleuren (niet de nummers, maar de namen van de kleuren). Maar ik krijg het niet voor elkaar. Ik geef toe, ik ben geen ster in het JOINEN...