PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL Problem


Ritschy
2004-01-25, 11:51:32
Hallo,

ich bin gerade dabei eine PHP-basierte Homepage zu basteln, doch jetzt bin ich auf folgendes Problem gestoßen: Ich habe zwei MySQL Tabellen, die ich in einer Abfrage verbinden will. Folgendes Szenario:

erste Tabelle, enthält einen Primärschlüssel sowie eine Beschreibung:

1|Beschreibung1
2|Beschreibung2
3|Beschreibung3
.
.
.


zweite Tabelle, enthält einen Primärschlüssel, weitere Attribute sowie zweimal einen Verweis auf die erste Tabelle:

1|Attribut1|...|1|2
2|Attribut1|...|2|3
3|Attribut1|...|1|3
.
.
.


Ich hätte jetzt gerne eine Tabelle als Ausgabe, die folgendermaßen aussieht (Basierend auf Tabelle zwei mit den Beschreibungen aus Tabelle 1 statt den Verweisen):

1|Attribut1|...|Beschreibung1|Beschreibung2
2|Attribut1|...|Beschreibung2|Beschreibung3
3|Attribut1|...|Beschreibung1|Beschreibung3
.
.
.

Mit einem inner join erhalte ich jedoch immer folgendes Ergebnis:

1|Attribut1|...|Beschreibung1|Beschreibung1
1|Attribut1|...|Beschreibung2|Beschreibung2
2|Attribut1|...|Beschreibung2|Beschreibung2
2|Attribut1|...|Beschreibung3|Beschreibung3
3|Attribut1|...|Beschreibung1|Beschreibung3
3|Attribut1|...|Beschreibung1|Beschreibung3


Momentan sieht meine Abfrage wie folgt aus:

SELECT Tabelle2.*, Tabelle1.Beschreibung AS a, Tabelle1.Beschreibung AS b FROM Tabelle2 INNER JOIN Tabelle1 ON (Tabelle2.Verweis1 = Tabelle1.Primärschlüssel OR Tabelle2.Verweis2 = Tabelle1.Primärschlüssel)

Das haut natürlich nicht hin. Group By Tabelle2.Primärschlüssel hilft auch nicht, da dann immer nur die erste Beschreibung bei a und b steht. Da gibt es sicher noch einen Trick das Porblem zu lösen oder?

Aqualon
2004-01-25, 13:25:48
Versuchs mal mit folgender Abfrage:

SELECT Tabelle2.Primärschlüssel, Tabelle2.Attribut1, a.Beschreibung, b.Beschreibung
FROM Tabelle2, Tabelle1 AS a, Tabelle1 AS b
WHERE Tabelle2.Verweis1 = a.Primärschlüssel AND Tabelle2.Verweis2 = b.Primärschlüssel

Tabelle2.* kannst du nicht verwenden, weil du sonst auch die Verweisschlüssel mit ausgibst.

Aqua

Ritschy
2004-01-25, 13:58:07
Danke, jetzt klappts. Allerdings muss man noch eine kleiner Änderung in Deiner Abfrage machen:

[code]
SELECT Tabelle2.Primärschlüssel, Tabelle2.Attribut1, a.Beschreibung AS x , b.Beschreibung AS y
FROM Tabelle2, Tabelle1 AS a, Tabelle1 AS b
WHERE Tabelle2.Verweis1 = a.Primärschlüssel AND Tabelle2.Verweis2 = b.Primärschlüssel
[code]

Sonst kommt wieder zweimal die gleiche Beschreibung. Aber vielen Dank!