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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>


Door bovenstaande query uit te voeren zul je het volgende resultaat krijgen (in PHPMyAdmin):

Afbeelding

Dit houdt in dat je twee id nummers hebt! Dus als je vervolgens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
echo $row['id'];
?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>


Wanneer je dit zou uitvoeren, zou je het volgende resultaat kunnen verwachten:

Afbeelding

Je kunt deze hierna als volgt benaderen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
echo "id nummer uit personen tabel: " . $row['pers_id'] . "<br />";
echo "id nummer uit leeftijden tabel: " . $row['leeftijd_id'] . "<br />";
?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
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 />";
?>


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!

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Selecteren uit meerdere tabellen
  2. Voorbereiding
  3. Het echte werk!
  4. Het praktische voorbeeld ontleden
  5. Dubbele kolom namen

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.