Iftikhar: Datenbankabfrage für zwei Tabellen

Hallo,

kann man zwei Tabellen in einer Datenbank mit einer einzigen SQL-Anweisung nach einem Wert abfragen?

Beide Tabellen enthalten jeweils eine Spalte mit dem gleichen Namen. In diesen soll nach einem Wert gesucht werden.

Wie sieht die Abfrage-Anweiseung für zwei Tabellen aus?

Danke im Voraus!

Iftikhar

  1. Hi,

    Wie sieht die Abfrage-Anweiseung für zwei Tabellen aus?

    bitte genauer.

    select xyz from tabelle1, tabelle2 where tabelle1.spalte = abc or tabelle2.spalte = abc

    Cheatah

    1. Hi auch,

      Wie sieht die Abfrage-Anweiseung für zwei Tabellen aus?
      select xyz from tabelle1, tabelle2 where tabelle1.spalte = abc or tabelle2.spalte = abc

      das würde ich zu vermeiden versuchen.

      Ein "SELECT FROM table1, table2" 'droht' (je nach Implementierung der database engine) einen JOIN zu implizieren, welcher dann ggf. einen Haufen Performance kosten würde.
      Für die gestellte Aufgabe gibt es einen eigenen SQL-Operator:
      "SELECT XYZ FROM tabelle1 UNION SELECT XYZ FROM tabelle2".
      (Was nebenbei erlaubt, daß die betreffende Spalte in beiden Tabellen unterschiedlich heißen darf, solange beide denselben Datentyp aufweisen.

      mfG - Michael

  2. Hallo Iftikhar,

    kann man zwei Tabellen in einer Datenbank mit einer einzigen SQL-Anweisung nach einem Wert abfragen?

    immer, keine Frage.

    Beide Tabellen enthalten jeweils eine Spalte mit dem gleichen Namen. In diesen soll nach einem Wert gesucht werden.

    schon mal günstig.

    Wie sieht die Abfrage-Anweiseung für zwei Tabellen aus?

    in Ergänzung zu Cheatah:
    select irgendeinespalte from tabelle1, tabelle2 where (tabelle1.spalte = tabelle2.spalte)
    Das ist ein sogenannter 'inner join', er funktioniert immer dann korrekt, wenn zu jedem Datensatz in 1 auch mindestens 1er in 2 existiert.

    Nun kann natürlich auch in tabelle1 (dann hättest Du in tabelle2 verwaiste Datensätze, referentielle Integrität?) oder tabelle2 (keine Child-Daten) kein entsprechender Datensatz vorhanden sein. Solche Fälle würden mit o. SQL nicht gefunden.
    In diesen Fällen müsstest Du mit views(DB-Server) oder Abfragen(Access) arbeiten, da kannst Du Tabellen mit joins verknüpfen, oder aber in SQL sog. 'joins' verwenden, s. unter joins in der Hilfe zu Deiner DB.
    Nebenbei: es ist immer gut, anzugeben in welcher DB das Problem existiert, die unterscheiden sich nämlich alle etwas.

    Gruss
    Uwe Nohl

    1. Hallo Iftikhar,

      ganz genau:

      select tabelle1(evtl. tabelle2).irgendeinespalte from tabelle1, tabelle2 where (tabelle1.irgendeinespalte = tabelle2.irgendeinespalte)

      Da die Spalten gleichnamig sind, benötigt SQL die exakte Information,
      aus welcher Tabelle es die Werte selektieren soll. Selektieren heisst hier aber nicht, dass nur die Daten der angegebenen Tabelle gesucht werden. Aufgrund des joins werden auch alle assoziierten Daten der 'gejointen' Tabelle mitgesucht. SQL braucht sozusagen nur einen 'Initialaufhänger'.

      Gruss
      Uwe Nohl

  3. Vielen Dank Leute, es geht!

    Iftikhar