Hallo allerseits,
Ich hab da ein Problem. Vorab erstmal meine Tabbellen.
Spalten Tabelle1(produktanwendung):
id [AutoIncrement| int(11)| PK (für Tabelle2-id_anwendung)] name_produktanwendung [char (50)|NULL-ja|]
Spalten Tabelle2(anwendung_bewertung_version) :
versionsnummer[int(11)] id_anwendung[int(11)|FK (für Tabelle1-id)]
bewertungseigenschaft[char(20)]
id_name_produkt_gleicher_bewertung1[int(11)|FK(für Tabelle3-id)]
id_name_produkt_gleicher_bewertung2[int(11)|FK(für Tabelle3-id)]
id_name_produkt_gleicher_bewertung3[int(11)|FK(für Tabelle3-id)]
Spalten Tabelle3(produktname) :
id[int(11)|PK(für Tabelle2-id_name_produkt_)]
name_produkt[char(20)]
Dies ist ein Auszug aus einer komplexen-Tabellenstruktur. Es gibt Produkte, die für bestimmte Anwendungen eingesetzt werden können.
Diese Anwendungen haben verschiedene Versionen. In der jeweiligen Version werden die dafür nutzbaren Produkt und die ebenfallls eine
gleiche Bewertung bekommen haben hinterlegt.
Nun möchte ich den Namen der Anwendung ausgegeben haben, in dem ich ein Produkt vorgebe. Es kann jetzt sein, dass das vorgegebene Produkt
in der Spalte id_name_produkt_gleicher_bewertung1, -2, -3 hinterlegt ist. D. h ich möchte mehrere Spalten einer Tabelle mit einem Wert einer
anderen vergleichen.
Hier mal mein Versuch.
[highlight=sql]
SELECT
name_produktanwendung
FROM
produktanwendung JOIN anwendung_bewertung_version
ON
produktanwendung.id = anwendung_bewertung_version.id_anwendung
JOIN produktname As t1
ON
anwendung_bewertung_version.id_name_produkt_gleich er_bewertung1 = t1.id
JOIN produktname As t2
ON
anwendung_bewertung_version.id_name_produkt_gleich er_bewertung2 = t2.id
JOIN produktname As t3
ON
anwendung_bewertung_version.id_name_produkt_gleich er_bewertung3 = t3.id
WHERE
t1.name_produkt = 'übergebener_name'
OR
t2.name_produkt = 'übergebener_name'
OR
t3.name_produkt = 'übergebener_name'
[/highlight]
Mein Problem ist jetzt das mir ein leeres Resultat ausgegeben wird, also kein Fehler. Es ist auch 100% ein DB eintrag vorhanden. Auch der übergebene name ist 100% richtig.
Hab ich ein Denkfehler was die Abfrage betrifft?
kann mir jemand weiterhelfren?
Vielen Dank schon mal.
Viele Grüße
Ich hab da ein Problem. Vorab erstmal meine Tabbellen.
Spalten Tabelle1(produktanwendung):
id [AutoIncrement| int(11)| PK (für Tabelle2-id_anwendung)] name_produktanwendung [char (50)|NULL-ja|]
Spalten Tabelle2(anwendung_bewertung_version) :
versionsnummer[int(11)] id_anwendung[int(11)|FK (für Tabelle1-id)]
bewertungseigenschaft[char(20)]
id_name_produkt_gleicher_bewertung1[int(11)|FK(für Tabelle3-id)]
id_name_produkt_gleicher_bewertung2[int(11)|FK(für Tabelle3-id)]
id_name_produkt_gleicher_bewertung3[int(11)|FK(für Tabelle3-id)]
Spalten Tabelle3(produktname) :
id[int(11)|PK(für Tabelle2-id_name_produkt_)]
name_produkt[char(20)]
Dies ist ein Auszug aus einer komplexen-Tabellenstruktur. Es gibt Produkte, die für bestimmte Anwendungen eingesetzt werden können.
Diese Anwendungen haben verschiedene Versionen. In der jeweiligen Version werden die dafür nutzbaren Produkt und die ebenfallls eine
gleiche Bewertung bekommen haben hinterlegt.
Nun möchte ich den Namen der Anwendung ausgegeben haben, in dem ich ein Produkt vorgebe. Es kann jetzt sein, dass das vorgegebene Produkt
in der Spalte id_name_produkt_gleicher_bewertung1, -2, -3 hinterlegt ist. D. h ich möchte mehrere Spalten einer Tabelle mit einem Wert einer
anderen vergleichen.
Hier mal mein Versuch.
[highlight=sql]
SELECT
name_produktanwendung
FROM
produktanwendung JOIN anwendung_bewertung_version
ON
produktanwendung.id = anwendung_bewertung_version.id_anwendung
JOIN produktname As t1
ON
anwendung_bewertung_version.id_name_produkt_gleich er_bewertung1 = t1.id
JOIN produktname As t2
ON
anwendung_bewertung_version.id_name_produkt_gleich er_bewertung2 = t2.id
JOIN produktname As t3
ON
anwendung_bewertung_version.id_name_produkt_gleich er_bewertung3 = t3.id
WHERE
t1.name_produkt = 'übergebener_name'
OR
t2.name_produkt = 'übergebener_name'
OR
t3.name_produkt = 'übergebener_name'
[/highlight]
Mein Problem ist jetzt das mir ein leeres Resultat ausgegeben wird, also kein Fehler. Es ist auch 100% ein DB eintrag vorhanden. Auch der übergebene name ist 100% richtig.
Hab ich ein Denkfehler was die Abfrage betrifft?
kann mir jemand weiterhelfren?
Vielen Dank schon mal.
Viele Grüße
Comment