hulp nodig bij JOIN
Ik heb een MySQL-database met twee tabellen:
- tdias (met de velden diaID, diaPad, diaOmschrijving en diaPrijsID)
- tprijs (met de velden prijsID en prijstekst)
Ik wil een overzicht van alle records die in de database staan, maar in plaats van het veld diaPrijsID zou ik graag de waarden van het veld prijstekst uit de tabel tprijs laten zien. Ik weet dat dit mogelijk is door een JOIN. Ik heb al op het forum en de tutorials gezocht, maar wat ik ook probeer: ik krijg het niet voor elkaar. Ik heb de volgende code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
//verwijzign naar extern formulier naar verbinding met naam database, username en password
include("verbinding/connect.php");
//query definieren
$q_allesophalen="SELECT * FROM tdias"; //selecteer alles uit de tabel tdias
$alles=mysql_query($q_allesophalen); //het resultaat heet 'alles'
$num=mysql_numrows($alles); //tel het aantal rijen van het resultaat
mysql_close(); //sluiten
//titel maken voor pagina en loopje draaien
echo "<b><center>Database Output</center></b><br><br>";
$i=0;
while($i < $num)
{
//alle gevonden records laten zien
$diaID=mysql_result($result,$i,"diaID");
$diaPad=mysql_result($result,$i,"diaPad");
$diaOmschrijving=mysql_result($result,$i,"diaOmschrijving");
$diaprijsID=mysql_result($result,$i,"diaprijsID");
echo "<b>$diaID $diaPad</b><br>Omschrijving: $diaOmschrijving<br>diaPrijsID: $diaPrijsID<br><hr><br>";
$i++;
}
?>
//verwijzign naar extern formulier naar verbinding met naam database, username en password
include("verbinding/connect.php");
//query definieren
$q_allesophalen="SELECT * FROM tdias"; //selecteer alles uit de tabel tdias
$alles=mysql_query($q_allesophalen); //het resultaat heet 'alles'
$num=mysql_numrows($alles); //tel het aantal rijen van het resultaat
mysql_close(); //sluiten
//titel maken voor pagina en loopje draaien
echo "<b><center>Database Output</center></b><br><br>";
$i=0;
while($i < $num)
{
//alle gevonden records laten zien
$diaID=mysql_result($result,$i,"diaID");
$diaPad=mysql_result($result,$i,"diaPad");
$diaOmschrijving=mysql_result($result,$i,"diaOmschrijving");
$diaprijsID=mysql_result($result,$i,"diaprijsID");
echo "<b>$diaID $diaPad</b><br>Omschrijving: $diaOmschrijving<br>diaPrijsID: $diaPrijsID<br><hr><br>";
$i++;
}
?>
Die selecteert dus alleen de records uit de tabel tdias. Kan iemand me helpen met het maken van de JOIN?
Alvast enorm bedankt!
Dirk
waarom zetten we nu d. en p. voor de veldnamen, en wat betekent AS?
Ik ga het direct proberen, maar wil altijd graag weten wat het script precies doet...
Alvast bedankt!
Dirk
Ik gebruik een alias voor de tabelnamen, dat doe je door middel van die AS. Je kunt ook zonder aliasses werken, maar dan zul je de hele tabelnaam voor de kolomnaam moeten zetten.
Let op:
Je vraagt uit beide tabellen het id.
Als je nu de query zou afsluiten met id=id
heeft de Database geen idee welk id je bedoelt :)
Daar doe je normaal gesproken iets als tabel1.id=tabel2.id
Voor de luie mensen is uitgevonden dat je de tabelle ook mag hernoemen, grbuik dit echter zinvol. In de query van Blanche is in één oogopslag te zien wat er wordt bedoelt. Bij ingewikkelde querys uit meerdere tabellen is dit soms lastig. Gebruik dan ook zinvolle Aliassen. Bijvoorbeeld jouw query:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
SELECT
dia.diaID,
dia.diaPad,
dia.diaOmschrijving,
prijs.prijstekst
FROM
tdias AS dia,
tprijs AS prijs
WHERE
dia.diaPrijsID = prijs.prijsID
dia.diaID,
dia.diaPad,
dia.diaOmschrijving,
prijs.prijstekst
FROM
tdias AS dia,
tprijs AS prijs
WHERE
dia.diaPrijsID = prijs.prijsID
NU is precies duidelijk uit welke tabel een en ander komt. Ow ja dit is trouwens geen php maar sql;)
Gewijzigd op 01/01/1970 01:00:00 door Klaasjan Boven
Ik krijg nu de volgende melding:
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/virtual/site32/fst/var/www/html/diadb3.php on line 24
Line 24 correspondeert met rij 9 in de code die ik in de eerste post heb gezet.
Enig idee wat dat inhoudt?
@Klaasjan: je hebt gelijk, het is sql... Ik ben lekker bezig in Flash, en vond dat ik nu eindelijk maar eens 'echt' dynamische sites moest gaan bouwen, vandaar mijn overstap naar PHP en MySQL. Valt nog niet mee hoor...! In ieder geval bedankt voor al jullie hulp, ik waardeer het enorm dat jullie een NOOB op weg willen helpen!
Quote:
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/virtual/site32/fst/var/www/html/diadb3.php on line 24
Betekend vaak dat je query niet gelukt is