Dubbele kolom namen
Wat nou als je een id nummer moet hebben van de kolom personen en de kolom leeftijden? Dan heb je toch een dubbele benaming? Dat klopt! Wanneer je het volgende doet:
Code (php)
1
2
3
4
5
2
3
4
5
<?
$sql = "SELECT t1.id, t2.id FROM personen AS t1, leeftijden AS t2 ORDER BY t1.id LIMIT 0,1";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
?>
$sql = "SELECT t1.id, t2.id FROM personen AS t1, leeftijden AS t2 ORDER BY t1.id LIMIT 0,1";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
?>
Door bovenstaande query uit te voeren zul je het volgende resultaat krijgen (in PHPMyAdmin):
Dit houdt in dat je twee id nummers hebt! Dus als je vervolgens:
Doet, zul je 1 van de twee id nummers krijgen. Je kunt niet nog een keer $row['id'] oproepen, want dan krijg je weer het zelfde resultaat. Er zijn twee mogelijkheden om op te lossen, 1 goede, en 1 minder goede.
Wat je zou moeten doen, is beide kolomnamen een alias geven. Zie onderstaand voorbeeld. Hier wordt gezegd: t1.id AS pers_id, t2.id AS leeftijd_id. Dit houdt in dat het id nummer uit de tabel personen straks op te vragen is via de alias 'pers_id' en het id nummer uit de tabel leeftijden op te vragen is via de alias 'leeftijd_id'.
Code (php)
1
2
3
4
5
2
3
4
5
<?
$sql = "SELECT t1.id AS pers_id, t2.id AS leeftijd_id FROM personen AS t1, leeftijden AS t2 ORDER BY t1.id LIMIT 0,1";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
?>
$sql = "SELECT t1.id AS pers_id, t2.id AS leeftijd_id FROM personen AS t1, leeftijden AS t2 ORDER BY t1.id LIMIT 0,1";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
?>
Wanneer je dit zou uitvoeren, zou je het volgende resultaat kunnen verwachten:
Je kunt deze hierna als volgt benaderen:
Code (php)
Je kunt het ook anders oplossen. Dit is een minder goede oplossing maar ik wil hem je toch geven. Dit is eigenlijk alleen handig wanneer je slechts 2 dubbele kolommen benaderd. Wanneer er meer kolommen in het spel zijn zou ik 'mysql_fetch_array()' gebruiken omdat dit een stuk overzichtelijker is. Het volgende voorbeeld maakt gebruik van 'mysql_result()'.
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$sql = "SELECT t1.id, t2.id FROM personen AS t1, leeftijden AS t2 ORDER BY t1.id LIMIT 0,1";
$res = mysql_query($sql);
echo "id nummer uit personen tabel: " . mysql_result($res, 0) . "<br />";
echo "id nummer uit leeftijden tabel: " . mysql_result($res, 0, 1) . "<br />";
?>
$sql = "SELECT t1.id, t2.id FROM personen AS t1, leeftijden AS t2 ORDER BY t1.id LIMIT 0,1";
$res = mysql_query($sql);
echo "id nummer uit personen tabel: " . mysql_result($res, 0) . "<br />";
echo "id nummer uit leeftijden tabel: " . mysql_result($res, 0, 1) . "<br />";
?>
Zo kan het dus ook. Het is slechts 1 regel korter. In dit geval is het opzich wel handig om te gebruiken, alleen gaat mijn voorkeur uit naar de eerste methode. De dubbel benaamde kolomnamen een alias geven.
Ik hoop dat je wat aan deze tutorial hebt gehad, mocht je vragen hebben over de tutorial, laat een reactie achter. Heb je vragen over een andere query die buiten deze tutorial staat? Vraag dit dan op het forum!
Inhoudsopgave
- Selecteren uit meerdere tabellen
- Voorbereiding
- Het echte werk!
- Het praktische voorbeeld ontleden
- Dubbele kolom namen