Ik heb nu twee tabellen waar ik happy mee ben.
Dit zijn twee queries die ik heb gemaakt:
// de is query voor de tabel: beardie_fokkers
$sql = "SELECT fokker_id, fokker_kennelnaam, fokker_naam, fokker_telnr, fokker_email, fokker_website FROM beardie_fokkers";
// de query voor de tabel: beardie_nest
$sql = "SELECT nest_id, nest_geboortedatum, nest_nest_moeder, nest_vader, nest_geslacht_kleur, nest_betaald FROM beardie_nest";
Wat ik mis is dat ze beide aan elkaar worden gemaakt (gelinkt) tot 1 query en ik weet niet hoe dit te doen. Dus dat ik uiteindelijk 1 query krijg welke ùit beide tabellen de velden haalt zoals in beide queries vraag.
Uitgeschreven met de bijbehorende velden van betreffende tabellen:
$sql = 'SELECT fokker_kennelnaam, fokker_naam, fokker_telnr, fokker_email, fokker_website FROM beardie_fokkers WHERE fokker_id=nest_id';
Maar ik weet dat dit niet goed gaat maar zie even niet hoe op te lossen. Wie weet raad?
SELECT
f.fokker_id,
f.fokker_kennelnaam,
f.fokker_naam,
f.fokker_telnr,
f.fokker_email,
f.fokker_website
n.nest_id,
n.nest_geboortedatum,
n.nest_nest_moeder,
n.nest_vader,
n.nest_geslacht_kleur,
n.nest_betaald
FROM
beardie_fokkers AS f,
beardie_nest AS n
WHERE
f.fokker_id = n.nest_id
Trouwens, lees dit ook eens, je kan ook een left join gebruiken, zoals hier staat aangegeven op wikipedia.
Dit werkt ook perfect, heb het zelf ooit ergens bij gebruikt ;)
Helder en voor ik dit echt snap heb ik het dan goed dat dit allemaal hernoemde velden zijn en je krijgt wat in de tabellen staat?
<?php
SELECT
f.fokker_id,
f.fokker_kennelnaam,
f.fokker_naam,
f.fokker_telnr,
f.fokker_email,
f.fokker_website
n.nest_id,
n.nest_geboortedatum,
n.nest_nest_moeder,
n.nest_vader,
n.nest_geslacht_kleur,
n.nest_betaald
FROM
beardie_fokkers AS f,
beardie_nest AS n
WHERE
f.fokker_id = n.nest_id
?>
Helder en voor ik dit echt snap heb ik het dan goed dat dit allemaal hernoemde velden zijn en je krijgt wat in de tabellen staat?
Klopt.. Maar met een INNER JOIN (left join) is het eigenlijk nog netter, maar dat zou je maar eens moeten kijken of je daaruit komt.. Ik wil je ook wel helpen hoor, maar ik denk dat de uitleg op de link in mijn vorige post ook goede uitleg geeft.
SELECT * FROM tabel1 INNER JOIN tabel2 ON tabel1.veld = tabel2.veld
Dus bij mij:
SELECT * FROM beardie_fokkers INNER JOIN beardie_nest ON beardie_fokkers.veld = beardie_nest.veld
Hoe nu verder? Wat zet ik neer bij veld? Ik heb geen idee...
@Robert: een left join is geen inner join, maar juist een outer join.
Bij een inner join worden alleen de velden geselecteerd waarbij er bij beide tabellen een match is. Bij een left join worden alle velden van de ene (linker) tabel geselecteerd, ongeacht of er matches zijn met de tweede tabel.
@Lissy: Zou je misschien je database structuur even weer kunnen geven, dan is het wat duidelijker.