JOIN van twee tabellen waarin dezelfde column voorkomt
Ik heb een vraag met betrekking tot een JOIN van twee tabellen waarin dezelfde column voorkomt, echter deze heeft in elke tabel een andere waarde.
Hoe kan ik deze aanroepen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
tabel klanten
+------+----+--------+
| ID | NR | NAAM |
+------+----+--------+
tabel contactpersonen
+------+----+---------+----------+
| ID | NR | KLTID | VOORNAAM |
+------+----+---------+----------+
?>
tabel klanten
+------+----+--------+
| ID | NR | NAAM |
+------+----+--------+
tabel contactpersonen
+------+----+---------+----------+
| ID | NR | KLTID | VOORNAAM |
+------+----+---------+----------+
?>
Ik doe dus een join van contactpersonen met klanten waarbij contactpersonen.KLTID = klanten.ID, maar het volgnummer bij klanten is heel iets anders dan het volgnummer bij contactpersonen.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
SQL resultaat
+------+----+---------+----------+------+----+--------+
| ID | NR | KLTID | VOORNAAM | ID | NR | NAAM |
+------+----+---------+----------+------+----+--------+
?>
SQL resultaat
+------+----+---------+----------+------+----+--------+
| ID | NR | KLTID | VOORNAAM | ID | NR | NAAM |
+------+----+---------+----------+------+----+--------+
?>
Kan ik dit alsvolgt oplossen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
// De opdracht voor de samengevoegde records uit "$tabel" (klanten) en "$tabelcontact" (contactpersonen)
$SQL = "SELECT ".$tabelcontact.".*, ".$tabel.".ID, ".$tabel.".NR, ".$tabel.".TREF, ".$tabel.".NAAM, ".$tabel.".NAAM1 FROM ".$tabelcontact."
INNER JOIN ".$tabel." ON ".$tabelcontact.".KLTID=".$tabel.".ID ORDER BY ".$tabelcontact.".ID ".$WHERE;
$Resultaat = mysql_db_query ($DBNaam, $SQL, $Verbinding);
// Maak een array met de gevonden resultaten
$r=0;
while ($Rij = mysql_fetch_array ($Resultaat) ) {
$r++;
$KCP[0][$r] = $Rij['contactpersonen.ID'];
$KCP[$Rij['ID']]['KLTID'] = $Rij['contactpersonen.ID'];
$KCP[$Rij['ID']]['KLTNR'] = $Rij['klanten.NR'];
$KCP[$Rij['ID']]['KLTNAAM'] = $Rij['klanten.NAAM'];
$KCP[$Rij['ID']]['KCPID'] = $Rij['contactpersonen.ID'];
$KCP[$Rij['ID']]['KCPNR'] = $Rij['contactpersonen.NR'];
$KCP[$Rij['ID']]['KCPVOORNAAM'] = $Rij['contactpersonen.VOORNAAM'];
}
?>
// De opdracht voor de samengevoegde records uit "$tabel" (klanten) en "$tabelcontact" (contactpersonen)
$SQL = "SELECT ".$tabelcontact.".*, ".$tabel.".ID, ".$tabel.".NR, ".$tabel.".TREF, ".$tabel.".NAAM, ".$tabel.".NAAM1 FROM ".$tabelcontact."
INNER JOIN ".$tabel." ON ".$tabelcontact.".KLTID=".$tabel.".ID ORDER BY ".$tabelcontact.".ID ".$WHERE;
$Resultaat = mysql_db_query ($DBNaam, $SQL, $Verbinding);
// Maak een array met de gevonden resultaten
$r=0;
while ($Rij = mysql_fetch_array ($Resultaat) ) {
$r++;
$KCP[0][$r] = $Rij['contactpersonen.ID'];
$KCP[$Rij['ID']]['KLTID'] = $Rij['contactpersonen.ID'];
$KCP[$Rij['ID']]['KLTNR'] = $Rij['klanten.NR'];
$KCP[$Rij['ID']]['KLTNAAM'] = $Rij['klanten.NAAM'];
$KCP[$Rij['ID']]['KCPID'] = $Rij['contactpersonen.ID'];
$KCP[$Rij['ID']]['KCPNR'] = $Rij['contactpersonen.NR'];
$KCP[$Rij['ID']]['KCPVOORNAAM'] = $Rij['contactpersonen.VOORNAAM'];
}
?>
Toevoeging op 15/11/2010 18:18:48:
Ik ben er al uit... de oplossing blijkt de toevoeging "as KLTNR" in de query waardoor je "NR" hernoemt naar "KLTNR".
Altijd handig voor wie dit ooit eens na leest, nietwaar?
Gewijzigd op 15/11/2010 15:29:43 door Marco V
Er zijn nog geen reacties op dit bericht.