MS SQL Join Zugriff auf die gleichnamigen Spalten

fUnKuCh3n

Erfahrenes Mitglied
Moin,

ich habe folgende Abfrage:
Code:
select * from ansprechpartner join firma on firma.id = ansprechpartner.firma_id order by firma_id

In beiden Tabellen ist die Spalte name vorhanden, nun habe ich folgenden Code:
PHP:
$result = sqlsrv_query( $conn,"select * from ansprechpartner join firma on firma.id = ansprechpartner.firma_id order by firma_id");
while($row = sqlsrv_fetch_array($result))
{
    $ansprechpartner_id     =       $row['id'];
    $firma_id               =       $row['firma_id'];    
    $titel                  =       $row['titel'];
    $anrede                 =       $row['anrede'];
    $vorname                =       $row['vorname'];
    $name                   =       $row['name'];
    $telefon                =       $row['telefon'];
    $mobil                  =       $row['mobil'];
    $fax                    =       $row['fax'];
    $email                  =       $row['email'];
    $kommentar              =       $row['kommentar'];


?>

Allerdings das Problem, dass er mir bei $name sowohl den Inhalt des Ansprechpartners als auch der Firma ausgibt, wie kann ich denn quasi dieses trennen und beide über eine eigene Variable ansprechen?

Danke vorab.
 
Hallo,

das kannst du über sog. Aliase erreichen. Dazu musst du deinen Tabellen-Spalten einen Alias verpassen. Etwa so:

SQL:
select *, firma.name AS firmen_name, ansprechpartner.name as ansprechpartner_name
from ansprechpartner
join firma on firma.id = ansprechpartner.firma_id
order by firma_id

Dann kannst du im PHP-Code so darauf zugreifen:

PHP:
while($row = sqlsrv_fetch_array($result))
{
   echo "Firma: " . $row['firmen_name']."<br/>";
   echo "Ansprechpartner: " . $row['ansprechpartner_name']."<br/>";
 
SELECT * ist böse, sehr Böse!
Du solltest die Felder auflisten und bei doppeltem Namen einen Alias vergeben.
SQL:
SELECT
	ap.id				AS ap_id,
	f.id				AS f_id,
	ap.name				AS ap_name,
	f.name				AS f_name,
	ap.anrede,
	ap.vorname,
	.. etc
FROM
	ansprechpartner 	AS ap
	INNER JOIN firma 	AS f
		ON f.id = ap.firma_id
ORDER BY
	f.firma_id
Und damit das ganze nachher im PHP noch lesbar bleibt:
PHP SQL-Statement in PHP lesbar darstellen

PS: Mein Code oben ist MySQL. für MS SQL must du nachschauen wie das mit den ALIAS geht - aber es geht sicher
 
Zuletzt bearbeitet von einem Moderator:
Zurück