SELECT Anweisung FROM 2 Tables

Diskutiere mit über: SELECT Anweisung FROM 2 Tables im Datenbanksysteme für das Web Forum

  1. Eidex

    Eidex Thread Starter MacUser Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Registriert seit:
    01.05.2004
    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
     
  2. odif

    odif MacUser Mitglied

    Beiträge:
    413
    Zustimmungen:
    1
    Registriert seit:
    14.07.2005
    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.
     
  3. master_p

    master_p MacUser Mitglied

    Beiträge:
    1.065
    Zustimmungen:
    23
    Registriert seit:
    31.01.2005
    Zumal ein Feld, welches "email" heißt irgendwie in meinen Augen nach schlechtem Datenbankdesign aussieht.
     
  4. Eidex

    Eidex Thread Starter MacUser Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Registriert seit:
    01.05.2004

    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
     
  5. worf

    worf MacUser Mitglied

    Beiträge:
    848
    Zustimmungen:
    13
    Registriert seit:
    06.01.2005
    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
     
  6. current

    current MacUser Mitglied

    Beiträge:
    64
    Zustimmungen:
    1
    Registriert seit:
    02.10.2004
    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...
     
  7. odif

    odif MacUser Mitglied

    Beiträge:
    413
    Zustimmungen:
    1
    Registriert seit:
    14.07.2005
    Dann probier es so:
    SELECT mos_unterst_priv.email FROM mos_unterst_priv, mos_unterst_firma WHERE mos_unterst_privnewsletter = "1"

    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
     
  8. mkoessling

    mkoessling MacUser Mitglied

    Beiträge:
    1.487
    Zustimmungen:
    0
    Registriert seit:
    02.02.2005
    Wieso soll das schlechtes Datenbankdesign sein???
    In meiner Datenbank benutze ich das Feld "email" in mehreren Tabellen.
     
  9. oglimmer

    oglimmer MacUser Mitglied

    Beiträge:
    1.124
    Zustimmungen:
    78
    Registriert seit:
    16.11.2004
    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)
     
  10. Eidex

    Eidex Thread Starter MacUser Mitglied

    Beiträge:
    29
    Zustimmungen:
    0
    Registriert seit:
    01.05.2004
    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
     
Die Seite wird geladen...
Ähnliche Themen - SELECT Anweisung FROM Forum Datum
SQL - Select Abfrage mit "Null-Zeile" Datenbanksysteme für das Web 07.06.2009
Problem mit Umlauten bei MySQL Select Datenbanksysteme für das Web 15.08.2005
MySQL union select Datenbanksysteme für das Web 10.03.2005

Diese Seite empfehlen

Benutzerdefinierte Suche