join

Status
Niet open voor verdere reacties.

willem008

Gebruiker
Lid geworden
28 sep 2007
Berichten
792
Goede dag

Ik ben me aan het verdiepen in joinen,

Ik wil in mijn database een query om zetten in een join,maar het wil nog niet erg

Ik heb een tabel pikeur met daar in
pikeur_id
pikeur
paard_id
plaats_id
uitslag_id


Ik heb nu de volgende goed werkende query

select * from paard, plaats, pikeur, uitslag where
pikeur ='ruud pools' and
paard.paard_id = pikeur.paard_id and
plaats.plaats_id = pikeur.plaats_id and
uitslag.uitslag_id = pikeur.uitslag_id


Hoe zet ik deze nu om in een join
 
Laatst bewerkt:
Dat is al een join, alleen dan anders omschreven.

Dit is de join notatie:
[sql]select * from pikeur
inner join plaats on pikeur.plaats_id = plaats.plaats_id
inner join paard on pikeur.paard_id = paard.paard_id
inner join uitslag on uitslag.uitslag_id = pikeur.uitslag_id
[/sql]
 
ok heb hem nu zo gemaakt neem aan dat hij zo goed is hij werkt in ieder geval wel

if ( $_POST['choice'] == 'SVE' ) {
$sql = "select * from pikeur
inner join plaats on pikeur.plaats_id = plaats.plaats_id
inner join paard on pikeur.paard_id = paard.paard_id
inner join uitslag on uitslag.uitslag_id = pikeur.uitslag_id
where pikeur = 'sven schraal'";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "<tr><td><br /><strong>" . $row["pikeur"] . $row[""] . "</strong><br /></td></tr>
<tr><td>" . $row["uitslag"] ."</td></tr>
<tr><td> " . $row["plaats"] . "</td></tr>\n";
echo "<tr><td colspan='2'><strong>" . $row["naam"] . "</strong><br /></td></tr>\n";
}

}


Dan had ik nog een klein vraagje


Ik heb die tabel pikeur

met daarin
pikeur_id
pikeur
paard_id
plaats_id
uitslag_id

Nou is het zo dat een pikeur met meerdere paarden en op meerdere plaatsen en ook verschillende uitslagen scort


dus ik heb nu bijv in die tabel staan

1 klaasje 2 5 9
2 klaasje 5 5 8
3 jantje 6 8 8

dus er staan meerdere keren klaasje in die tabel
mijn vraag mag dat of is dat uit de boze
 
Das niet correct genormaliseerd nee. Het kan wel, maar het gaat wel tegen de regels van database design in; data mag niet meer dan 1x in de database voorkomen.

(Performance upgrades daargelaten, maar alleen als het niet anders kan)
 
Ja dat dacht ik al dat dat niet mag

ik dacht ik maak een tabel met de pikeurs en daarin gelijk de koppeltabel,

Ik moet dan zeker gewoon een tabel pikeurs maken voor alleen de pikeurs.
pikeurs_id, pikeur
en apart een koppeltabel met daarin
id ,pikeur_id , paard_id , uitslag_id , plaats_id

of is er een andere manier

ik probeer eigelijk zo weinig mogelijk tabelen te krijgen.
 
Leuk dat je je wilt verdiepen in het joinen

ik zal meteen even een goede tip geven bij je query zoals in post #1

select *
from
paard, plaats, pikeur, uitslag
where pikeur ='ruud pools'
and paard.paard_id = pikeur.paard_id
and plaats.plaats_id = pikeur.plaats_id
and uitslag.uitslag_id = pikeur.uitslag_id

Zoals frats zegt is de tabellen scheiden door een komma inderdaad een type join, maar die zou ik niet meer gebruiken... dat is meer een overblijfsel van "vroegah" zegmaar. bovendien is het gebruik van dat type joins meestal een indicatie van prutswerk.

Ga maar eens op het web zoeken naar Cartesian product.

Joinen zoals Frats voordoet in zijn stukje SQL code (INNER / OUTER JOIN ... ON) is behalve overzichtelijker bij grote queries liever voor je database. Die zou ik wél gebruiken.

dit heet ANSI joins. zoek dat ook maar eens op internet op.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan