1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

Abfrage eines Tabellenteils mit Filterregel aus anderer Tabelle

  • Aeon
  • 5. November 2007 um 09:30
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • Aeon
    Punkte
    10
    Beiträge
    1
    • 5. November 2007 um 09:30
    • #1

    Hallo,

    ich verwende DB Visualizer Free 5.1.1, um Oracle-Datenbanken abzufragen und habe Probleme mit einem SQL-Statement.

    Die benötigten Daten sind über mehrere Tabellen verteilt, wobei ich jeweils nur einen Teil einer Tabelle sichern will.
    Dazu möchte ich alle Daten abfragen, die in einer anderen Tabelle einer gewissen Company-Nummer zugewiesen sind.
    Verbunden sind die beiden Tabellen über eine eindeutige Object_ID. Wie kann ich diejenigen Daten für die Object_ID herausfiltern, die in der zweiten Tabelle die gewünschte Object_ID aufweisen?

    Für folgende versuchte Abfrage


    SELECT
    *
    FROM
    SHOP_FBNR
    WHERE
    SHOP_FBNR.OBJECT_ID =
    (
    SELECT
    OBJECT_ID
    FROM
    SHOP_MAIN
    WHERE
    SHOP_MAIN.COMPANY = '419'
    )

    erhalte ich zB die Fehlermeldung

    [Error Code: 1427, SQL State: 21000] ORA-01427: single-row subquery returns more than one row

    Für sich ausgeführt ergibt die Subquery jedoch klar eine Reihe von Object_ID, wieso nennt sich das ganze also single-row subquery?
    Könnt Ihr mir helfen, die Abfrage korrekt zu formulieren?

    Vielen Dank für eure Hilfe!

  • Paulchen
    Gast
    • 5. November 2007 um 09:40
    • #2

    Wenn du = verwendest, muss auf beiden Seiten dieses Gleichheitszeichens ein einzelner Wert stehen. Rechts steht eine Query, die mehr als ein Tupel liefert, das geht nicht. Oracle schreit daher, dass dort, wo eine "single-row subquery" stehen sollte, mehr als ein Wert rauskommt.

    Ich denke, was du willst, ist, alle Tupel aus SHOP_FBNR abzufragen, für die OBJECT_ID in der Liste der Werte, welche die Subquery liefert, enthalten ist. Das geht mit "IN":

    SQL
    SELECT
    *
    FROM
    SHOP_FBNR
    WHERE
    SHOP_FBNR.OBJECT_ID [B][COLOR='Red']IN[/COLOR][/B]
    (
    SELECT
    OBJECT_ID
    FROM
    SHOP_MAIN
    WHERE
    SHOP_MAIN.COMPANY = '419'
    )
    Alles anzeigen
  • Maximilian Rupp 27. Dezember 2024 um 12:04

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

  1. Datenschutzerklärung
  2. Impressum