• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

SQL-Abfrage

rethus

Advanced Hacker
Ich habe ein kleines Problem mit einer SQL-Abfrage.
Vielleicht kann mir da jemand einen Tip geben.

Ich habe 2 Tabllen:

1. domains
2.domainaliases

Wenn für eine Domain ein Alias angelegt wurde, erscheint in der Tabelle domainaliases eine neue Zeile. Die Spalte dom_id der Tabelle Domainaliases referenziert auf die Spalte id in der Tabelle domains.

Soweit so gut. Mit dem folgenden Statement kann ich mir dann alle Domains inklusive Aliase ausgeben lassen:

Code:
"SELECT dom.name, alias.name
FROM domains dom, domainaliases alias
WHERE dom.cl_id='$dom_id'
AND dom.id=alias.dom_id"

Das Problem ist allerdings, das wenn kein Alias besteht, wird auch keine reguläre Domain ausgegeben.

Welche Syntax brauche ich nun, um Ihm zu sagen, das er nur die Alias-Tabelle zum vergleich ran zieht, wenn da auch ein Alias für die aktuelle Domain enthalten ist?

Hat jemand einen Tip?[/quote]
 

sc_m

Member
Verwende LEFT JOIN anstatt WHERE um die beiden Tabellen zu verknüpfen. Beim LEFT JOIN wird aus der linken Tabelle jeder Eintrag ausgegeben.
 
Sollte doch auch gehen wenn man bei der Abfrage statt eines AND ein OR nimmt. Da kommt es aber darauf an das dein Datenbestand in Ordnung ist, ansonsten kann es dir passieren das dir ein Alias gezeigt wird zu dem es keine Domain mehr gibt. Andererseits kannst Du damit ja auch gleich prüfen ob soetwas bei dir vorhanden ist.

Aber mal ehrlich: Das hat mit Programmierung nichts zu tun, dass Thema gehört ins Datenbank-Forum.
 
OP
R

rethus

Advanced Hacker
sc_m schrieb:
Verwende LEFT JOIN anstatt WHERE um die beiden Tabellen zu verknüpfen. Beim LEFT JOIN wird aus der linken Tabelle jeder Eintrag ausgegeben.

Left Join ist mir neu....

Aber das führt mich dochnicht ans Ziel, oder?
Ich will ja nur die Datensätze einer Bestuimmten ID aus der 1. Tabelle, und nicht alle...

Kannst du mal ein Beispiel entsprechend meiner oben gemachten eingaben posten?
 

sc_m

Member
Versuchen kann ich es ja (aus dem Kopf und natürlich ohne es zu testen).
Code:
SELECT dom.name, alias.name 
      FROM domains AS dom
      LEFT JOIN domainaliases AS alias ON dom.id=alias.dom_id
      WHERE dom.cl_id='$dom_id';
 
Oben