Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

2 SELECT Anweisungen verbinden

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von SQL Rookie, 7 Juni 2017.

  1. SQL Rookie

    SQL Rookie Benutzer

    Hallo zusammen,
    ich bin neu in diesem Forum und auch in der SQL Welt. Dies ist mein erster Beitrag und ich versuche einmal die Problemstellung zu beschreiben.

    Ich habe zwei Ausgangsfelder
    TROH-UNNR = 1903
    TROH-GGVS-VP = III

    und 2 Datenbanktabellen
    CORE_VERPACKUNGSGRUPPE
    INTID | NUMMER
    40271801 | III

    CORE_UNNUMMER
    INTID |NUMMER |INTID_VERPACKUNGSGRUPPE
    47791806 | 1903 | 40271801

    Jetzt versuche ich über meine Ausgangsfelder den Satz in der CORE_UNNUMMER zu ermitteln
    Hierzu suche ich mir in der CORE_VERPACKUNGSGRUPPE die INTID zu III. Dann will ich mit dieser INTID und der Nummer 1903 die INTID aus der CORE_UNNUMMER ermitteln.

    Hierzu setze ich dann folgende SELECT s ab:
    SELECT T1.INTID FROM CORE_VERPACKUNGSGRUPPE WHERE NUMMER = TROH-GGVS-VP

    SELECT T2.INTID FROM CORE_UNNUMMER WHERE NUMMER = TROH-UNNR AND INTID_VERPACKUNGSGRUPPE = T1.INTID

    Jetzt möchte ich gerne dieses beiden SELECT Befehle in einem einzigen unterbringen.

    Ich hoffe ich konnte die Problematik verständlich vermitteln und bedanke mich bereits für eure Antworten.

    Gruß Thomas
     
  2. akretschmer

    akretschmer Datenbank-Guru

    auch nach mehrfachem Durchlesen ist Dein Problem schwer nachzuvollziehen. Was verstehst Du unter Ausgangsfelder? Was soll denn insgesamt bei rauskommen? Wie hängen die 2 Tabellen logisch zusammen? Was sind das für Datentypen? In den Ausgangsfeldern ist das mal was numerisches (1903), dann ein String. Alles recht wirr...
     
  3. SQL Rookie

    SQL Rookie Benutzer

    Erst einmal vielen Dank für deine Antwort

    ok ich versuche es etwas kürzer zu formulieren

    Ich suche in der Tabelle CORE_UNNUMMER den Satz mit der INTID 47791806 ohne sie zu kennen.
    Ich habe halt nur die obigen zwei Werte also 1903 und 'III'

    Normalerweise würde ich ja die Abfrage starten

    SELECT INTID FROM CORE_UNNUMMER WHERE NUMMER = 1903 AND INTID_VERPACKUNGSGRUPPE = 123456789

    die INTID_VERPACKUNGSGRUPPE (also die 123456789) muss ich mir aber erst aus der Tabelle CORE_VERPACKUNGSGRUPPE ermitteln,
    also über den bekannten Wert 'III'

    Ich muss diese also quasi erst mit dem Befehl
    SELECT INTID FROM CORE_VERPACKUNGSGRUPPE WHERE NUMMER = 'III' ermitteln.

    Somit muss ich mir zuerst aus Tabelle CORE_VERPACKUNGSGRUPPE einen Wert ermitteln den ich für die Abfrage auf CORE_UNNUMMER brauche.

    Ich hoffe ich habe es jetzt etwas genauer beschreiben können.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    SELECT INTID FROM CORE_UNNUMMER WHERE NUMMER = 1903 AND INTID_VERPACKUNGSGRUPPE = (SELECT INTID FROM CORE_VERPACKUNGSGRUPPE WHERE NUMMER = 'III');


    löst dies das Problem?
     
  5. drdimitri

    drdimitri Datenbank-Guru

    Kann es sein, dass Du so etwas meinst:
    Code:
    SELECT ... FROM TabelleX WHERE id IN (SELECT id FROM tabelleY)
    Edit: Der Kollege war schneller ;)
     
    akretschmer gefällt das.
  6. SQL Rookie

    SQL Rookie Benutzer

    Vielen Dank für die Antworten.
    Ich werde dies morgen früh direkt testen und gebe dann eine Rückmeldung.
    Sieht aber plausibel aus. Wie gesagt SQL - Beginner
     
  7. SQL Rookie

    SQL Rookie Benutzer

    Hat geklappt.
    Danke
     
    akretschmer gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden