1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • 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
  • Aeon
    1
    Aeon
    Mitglied
    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
    1
    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.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung