![]() |
Datenbank: MySQL • Zugriff über: PHP
Zwei Tabellen verknüfen
Ich habe zwei Tabellen:
Tabelle adressen:
Code:
Tabelle adr_kategorien:
name
vorname kategorie_id
Code:
Wenn ich jetzt einen Datensatz abspeichere wird die ID der Kategorie in dem Feld kategorie_id abgelegt.
id
name Jetzt will ich alle Datensätze aus der Tabelle adressen, die einer bestimmten Kategorie entsprechen. Die Kategorie liegt dabei als Text vor und nicht als ID der Tabelle. Was ich im Internet gefunden habe:
Code:
Das funktioniert leider nicht. Führe ich den Query aus, bekomme ich alle Datensätzen.
SELECT adressen.*
FROM adressen INNER JOIN adr_kategorien WHERE adr_kategorien.name='Geschäftlich' Dann versuche ich noch zu einem Datensatz aus der Tabelle adressen die zugehörige Kategorie (Namen) zur KategorieID zu bekommen. |
Re: Zwei Tabellen verknüfen
Das sollte mit einem einfach join gehen z.b. so
SQL-Code:
select a.* -- oder adressen.*
from adressen a, adr_kategorien k where a.kategorie_id = k.id and k.name = 'Geschäftlich' |
Re: Zwei Tabellen verknüfen
Hi!
Wenn ich dich richtig verstanden habe, dann versuche mal das:
SQL-Code:
Zu deinem zweiten Problem:
SELECT adressen.*
FROM adressen JOIN adr_kategorien ON adressen.kategorie_id = adr_kategorien.name WHERE adr_kategorien.name='Geschäftlich' Was hast du denn von dem Datensatz aus Adressen? Nur Name und Vorname? Grüße, Frederic |
Re: Zwei Tabellen verknüfen
Oder besser in der neueren Syntax als expliziten JOIN
SQL-Code:
SELECT
a.* FROM adressen INNER JOIN adr_kategorien k on k.id a.kategorie_id WHERE adr_kategorien.name='Geschäftlich'; |
Re: Zwei Tabellen verknüfen
Aber dann den Alias a nicht vergessen:
SQL-Code:
SELECT
a.* FROM adressen a INNER JOIN adr_kategorien k on k.id a.kategorie_id WHERE adr_kategorien.name='Geschäftlich'; |
Re: Zwei Tabellen verknüfen
in weiterer Grund gegen C&P
SQL-Code:
SELECT
a.* FROM adressen a INNER JOIN adr_kategorien k on k.id a.kategorie_id WHERE k.name='Geschäftlich'; |
Re: Zwei Tabellen verknüfen
:lol: wir nähern uns der Lösung ^^
|
Re: Zwei Tabellen verknüfen
Also ich habe es jetzt wie arbu man gemacht. Das funktioniert.
Bleibt noch der zweite Query. Also dass er mir den Kategorienamen passend zur ID mit ausgibt zu den anderen Feldern. |
Re: Zwei Tabellen verknüfen
Meinst Du so?
SQL-Code:
SELECT
k.name, a.* FROM adressen a INNER JOIN adr_kategorien k on k.id a.kategorie_id WHERE k.name='Geschäftlich'; |
Re: Zwei Tabellen verknüfen
Einfach Feld mit angeben:
SQL-Code:
SELECT
a.*, k.name FROM adressen a INNER JOIN adr_kategorien k on k.id a.kategorie_id WHERE k.name='Geschäftlich'; |
Re: Zwei Tabellen verknüfen
Nein, nein.
Ungefiltert. Ich lasse mir alle Datensätze aus adressen ausgeben. Ich will aber nicht die ID der Kategorie da stehen haben, sondern den Namen der Kategorie. Mit der ID kann man ja nichts anfangen. |
Re: Zwei Tabellen verknüfen
Hi Luckie,
schau dir doch am besten mal an wie JOINs in SQL generell funktionieren. Musst du ein paar mal üben und dann hast du sicher den Bogen raus und du merkst dass das was du machen willst total einfach ist ;) Gruß Neutral General |
Re: Zwei Tabellen verknüfen
Dieser steht doch in k.name
Oder meinst du eine 2. Abfrage über alle Adressen, dann lasse einfach die where clause weg. |
Re: Zwei Tabellen verknüfen
@Neutral General: Das Versuche ich auch gerade, habe aber so meine Schwierigkeiten damit.
@mkinzler: Zitat:
Wenn ich das so mache:
Code:
Bekomme ich nur alle Datensätze bei denen das feld kategorie_id nicht leer ist.
$query = "SELECT a.*
FROM adressen a, adr_kategorien k WHERE a.kategorie_id = k.id"; $resultset = mysql_query($query); while($row = mysql_fetch_object($resultset)) { echo "<tr> <td>[url='./details.php?id=".$row->id."']".$row->name."[/url]</td> <td>[url='./details.php?id=".$row->id."']".$row->vorname."[/url]</td> <td></td> <td>".$row->priv_strasse."</td> Das zweite Problem ist, wie greife ich dann auf das Ergebnis zu? Ich habe ja in beiden Tabellen das Feld name. Über
Code:
wird es wohl nicht gehen oder?
$row->...
|
Re: Zwei Tabellen verknüfen
SQL-87 unterstützt nur inner joins. für outer Joins benötigst du die SQL-92 Syntax:
SQL-Code:
SELECT
a.*, k.name as Kategorienname FROM adressen a Left outer JOIN adr_kategorien k on k.id a.kategorie_id; |
Re: Zwei Tabellen verknüfen
Dann vergib doch Aliase auf die Felder, damit werden sie eindeutig identifizierbar.
|
Re: Zwei Tabellen verknüfen
Da muss was falsch sein:
Code:
$query = "SELECT
a.*, k.name as k_name FROM adressen a LEFT OUTER JOIN adr_kategorien k on k.id a.kategorie_id"; Zitat:
|
Re: Zwei Tabellen verknüfen
Lass mal das OUTER weg
|
Re: Zwei Tabellen verknüfen
Da fehlt ein Gleichheitszeichen in der JOIN-Bedingung.
|
Re: Zwei Tabellen verknüfen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz