SELECT Anweisung FROM 2 Tables

Eidex

Mitglied
Thread Starter
Dabei seit
01.05.2004
Beiträge
29
Reaktionspunkte
0
Hi,

ich versuche gerade mit einer einzigen Select Anweisung aus 2 Tables einen Wert abzufragen, wobei der Wert email in beiden Tables vorhanden ist, bekomme aber immer die Fehlermeldung, "email" sei zweideutig! Auch mit einer Join Anweisung bin ich nicht weitergekommen:

SELECT email FROM mos_unterst_priv, mos_unterst_firma WHERE newsletter = "1"

wo liegt der Hund begraben?


lg Paul
 
Eidex schrieb:
Hi,

ich versuche gerade mit einer einzigen Select Anweisung aus 2 Tables einen Wert abzufragen, wobei der Wert email in beiden Tables vorhanden ist, bekomme aber immer die Fehlermeldung, "email" sei zweideutig! Auch mit einer Join Anweisung bin ich nicht weitergekommen:

Woher soll der SQL-SErver wissen, aus welcher Tabelle e-mail geholt werden soll?

ES muss heissen:

SELECT mos_unterst_priv.email FROM mos_unterst_priv, mos_unterst_firma WHERE newsletter = "1"

Dadurch weiss der SErver aus welcher der WErt zu holen ist.
 
Zumal ein Feld, welches "email" heißt irgendwie in meinen Augen nach schlechtem Datenbankdesign aussieht.
 
odif schrieb:
Woher soll der SQL-SErver wissen, aus welcher Tabelle e-mail geholt werden soll?

ES muss heissen:

SELECT mos_unterst_priv.email FROM mos_unterst_priv, mos_unterst_firma WHERE newsletter = "1"

Dadurch weiss der SErver aus welcher der WErt zu holen ist.


Jetzt ist newsletter zweideutig..

Bin leider erst am Anfang mit mySQL, verstehe nicht warum bei der Selectanweisung auf eine bestimmte Tabelle verwiesene werden soll, ich dachte das ist Aufgabe der FROM Funktion, als sinngemäss:

SELECT wert aus tabelle FROM folgender Tabelle WHERE bestimmte Bedingung erfüllt ist

im Moment also:

select email from mos_unterst_priv where newsletter
select email from mos_unterst_firma where newsletter

lg Paul
 
master_p schrieb:
Zumal ein Feld, welches "email" heißt irgendwie in meinen Augen nach schlechtem Datenbankdesign aussieht.

Hallo master_p,

hmmm nicht das ich mich mit mysql auskennen würde aber was ist denn an einer entität email so schlimm das man direkt von schlechtem design spricht.

was meiner meinung nach in dem Statement fehlt ist die Join Bedingung

in der Art

select tabellea.feld from tabellea , tabelleb where tabellea.feld2 = tabelleb.feld1 and tabellea.email='1';

Oder kann MySQL sowas nicht.
Wenn denn in dem Statement oben die Eindeutigkeit der Felder hergestellt
wurde wird doch ein karthesisches Product geliefert oder ?

LG Worf
 
Du solltest in SELECTs die Tabellen immer benamsen, z.B.:

SELECT a.email FROM mos_unterst_priv a, mos_unterst_firma b WHERE b.newsletter = "1"

Das macht vermutlich zwar keinen Sinn, aber den bekommst du vielleicht dadurch, das du a und b noch irgendwie miteinander verknüpfst...
 
Eidex schrieb:
Jetzt ist newsletter zweideutig..

Dann probier es so:
SELECT mos_unterst_priv.email FROM mos_unterst_priv, mos_unterst_firma WHERE mos_unterst_privnewsletter = "1"

Eidex schrieb:
SELECT wert aus tabelle FROM folgender Tabelle WHERE bestimmte Bedingung erfüllt ist

Du hast das Prinzip schon richtig verstanden. Das Problem ist folgendes:
Du willst den Wert x gibst aber die tabellen y und z an. Wenn der WErt x in beiden Tabellen existiert (und eventuell unterschiedlich ist), weiss der Server nicht aus welcher Tabelle er den Wert nehmen soll. Jetzt musst du sagen, dass x aus y genommen werden soll, indem du SELECT y.x schreibst.

Falls du noch Fragen haben solltest, kannst du dich auch via ICQ melden. Da ist es leichter etwas zu erklären: Meine UIN 309177374
 
master_p schrieb:
Zumal ein Feld, welches "email" heißt irgendwie in meinen Augen nach schlechtem Datenbankdesign aussieht.
Wieso soll das schlechtes Datenbankdesign sein???
In meiner Datenbank benutze ich das Feld "email" in mehreren Tabellen.
 
Du willst ein sogenanntes UNION machen, keinen JOIN.

SELECT email FROM mos_unterst_priv WHERE newsletter = "1"
UNION
SELECT email FROM mos_unterst_firma WHERE newsletter = "1"

(Beachte, dass nicht alle DBMS UNIONs können)
 
danke für die anregungen, funktioniert leider noch immer nicht.

@odif:

komme gerne auf dein angebot zurück, fahr am wochenende in die berge und melde mich dann mit erfrischten grauen zellen falls noch nötig via ICQ


lg paul
 
UNION war des Rätsels Lösung, danke noch mal an alle!

lg Paul
 
Zurück
Oben Unten