MYSQL Spalten vergleichen über 2 verschiedene Tabellen HILFE

Eiskaffe

Mitglied
Hallo Damen und Herren,

ich möchte mehrere Spalten vergleichen in verschiedene Tabellen ich zeige euch ein Beispiel:

SELECT b.benutzer_id, b.benutzer_beziehungsstatus_id, b.benutzer_sexuelle_orientierung_id, a.options
FROM global_profildetails_select_felder a, global_profildetails b
WHERE a.value_id = b.benutzer_beziehungsstatus_id AND a.value_id = b.benutzer_sexuelle_orientierung_id

Erklärung: Ich möchte das er global_profildetails die Spalten mit dem global_profildetails_select_felder vergleicht, z.b
in der Tabelle global_profildetails steht der wert 1 für benutzer_beziehungsstatus_id
und in der Tabelle global_profildetails_select_felder steht für den Wert 1 der Name Single, dan kommt benutzer_sexuelle_orientierung_id in der Tabelle global_profildetails hat den Wert 4
und in der Tabelle global_profildetails_select_felder steht für den Wert 4 Heterosexuell.

Worauf ich hinaus will ist er soll die Werte von global_profildetails in der global_profildetails_select_felder vergleichen und die Namen für den Wert raussuchen für die Spalten benutzer_beziehungsstatus_id und benutzer_sexuelle_orientierung_id.

Das Problem hierbei ist das er ein Leeres Resultat zurück gibt und die Werte nicht vergleicht und nicht ausgibt außer ein Leeres Resultat :D.

PS: Sry wenn ich mich nicht richtig erkläre ich habe mein bestes gegeben :D ich bedanke mich für jede Hilfe :) Übrigens es geht um das Normalisierungs System.

Mit freundlichen Grüßen
David Koch
 
Mit der Formatierung nicht einfach zu lesen.

1) Fehlt da aber bei der "Namensgebung der Tabelle das AS
SQL:
...FROM global_profildetails_select AS A, global_profildetails AS b...

2) hast du im WHERE-Abschnitt immer das Feld "a.value" und vergleichst es einmal mit dem Beziehungsstatus und dann mit der Orientierung. Das klingt irgendwie unlogisch!?

Wenn "a.value" = Single ist dann kann es zwar sein das der Beziehungsstatus ebenfalls Single lautet aber das dann noch jemand bei sexuellen Orientierung Single eingetragen hat, das halte ich doch für ausgeschlossen!
 
Du musst global_profildetails_select_felder 2 mal einbinden, da b.benutzer_beziehungsstatus_id und b.benutzer_sexuelle_orientierung_id nix miteinander zu tun haben

SQL:
SELECT 
    det.benutzer_id, 
    det.benutzer_beziehungsstatus_id, 
    bs.options 		AS beziehungsstatus_text,
    det.benutzer_sexuelle_orientierung_id, 
    so.options		AS sexuelle_orientierung_text
FROM 
    global_profildetails det, 
    -- beziehungsstatus
    global_profildetails_select_felder bs,
    -- sexuelle_orientierung 
    global_profildetails_select_felder so, 
WHERE 
    det.benutzer_beziehungsstatus_id 			= bs.value_id
    AND det.benutzer_sexuelle_orientierung_id 	= so.value_id

@tombe
Bei den Tabellenaliasse ist das AS je nach DBMS Pflicht/Optional/Falsch.
Oracle -> ohne As
MS Access -> immer mit AS
MySQL -> Optional
 
Zuletzt bearbeitet von einem Moderator:
@Yaslaw: Danke das wußte ich mal wieder nicht. Ich habe es bei mir bisher immer geschrieben weil ich der Meinung war das man es muss.
 
Danke hat geklappt! :D das mit der Tabelle wusste ich nicht und das ich so viele Fehler habe ist einfach nur weil ich alles mögliche ausprobiert habe aber jetzt gehts danke dir viel mals! :) Danke
 
Danke auch dir @Tombe ich weiß das es unglogisch klingt, ich war aber schon so am verzweifeln das ich durcheinander gekommen bin, danke für dein Beitrag und für deine Zeit :)
 
Moin Yaslaw,

kleine Korrektur:
bei MS-Access ist das "AS" auch optional, es funktioneren beide Syntaxvarianten.

[Edit] Korrektur der Korrektur:
bei MS-Access ist das "AS" auch optional beim Aliasnamen der Tabelle, es funktioneren beide Syntaxvarianten.
bei MS-Access ist das "AS" nicht optional beim Aliasnamen einer Spalte, es funktionert nur mit "AS".
[/Edit]

Grüße
Biber
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück