1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Beide Bedingungen müssen erfüllt sein

Dieses Thema im Forum "Oracle" wurde erstellt von Bubas, 6 Oktober 2010.

  1. Bubas

    Bubas Neuer Benutzer

    Hallo zusammen,

    habe da ein kleines Blackout :(

    select CarID, Lagerbereich from Lager where Lagerbereich = 'BE' and Lagerbereich = 'AN'

    Ich möchte, dass alle CarID angezeigt werden, bei welchen der Lagerbereich BE UND AN (beide zusammen) enthalten ist.


    Beispiel:
    Bei dem Datensatz unten würde dann NUR CarID 3 angezeigt werden, da nur dieser BE und AN hat:

    CarID | Lagerbereich
    ------------------------------
    3 | BE
    3 | AN
    4 | BE
    5 | An


    Danke für die Hilfe
    Bubas
     
  2. Walter

    Walter Administrator Mitarbeiter

    AW: Beide Bedingungen müssen erfüllt sein

    Das sind also 4 Datensätze? Dann mach ein

    SELECT DISTINCT carid FROM lager WHERE lagerbereich in( 'BE', 'AN')

    oder alternativ

    SELECT DISTINCT carid FROM lager WHERE lagerbereich ='BE' or lagerbereich='AN'

    Du willst ja offenbar alle Datensätze bekommen wo entweder BE oder AN enthalten ist. Ein Datensatz kann ja nur entweder BE oder AN sein ....
     
  3. Bubas

    Bubas Neuer Benutzer

    AW: Beide Bedingungen müssen erfüllt sein

    Hallo walter

    Nein von diesen 4 Datensätze sollen nur die erste zwei abgefragt werden. Die 4 Datensätze stellen die Datenbank (Tabelleninhalt) dar.


    Eben nicht entweder oder, sondern erst wenn eine CarID ein 'BE' und ein 'AN' hat, dann soll die CarID ngezeigt werden. Ich will nur die CarID, welche im Lagerbereich 'BE' und 'AN' sind. Das ist ja das schwierige daran, weil das nicht in einem Datensatz ist sondern in zwei wie in meinem Beispiel aufgeführt.
     
  4. thomas_w

    thomas_w Datenbank-Guru

    AW: Beide Bedingungen müssen erfüllt sein

    Meinst Du sowas.... ? (mit MySQL getestet)

    Code:
    CREATE TABLE lager (
     carid INT NOT NULL,
     lagerbereich VARCHAR(2)
    );
    
    INSERT INTO lager VALUES
    ( 3 , 'BE'),
    ( 3 , 'AN'),
    ( 4 , 'BE'),
    ( 5 , 'AN');
    
    SELECT l.carid, MIN(l.lagerbereich) AS an, MAX(l.lagerbereich) AS be
      FROM lager l
      JOIN ( SELECT carid 
               FROM lager
              WHERE lagerbereich = 'BE' ) be
        ON be.carid = l.carid
      JOIN ( SELECT carid 
               FROM lager
              WHERE lagerbereich = 'AN' ) an
        ON an.carid = l.carid
    GROUP BY carid
    ORDER BY carid;
        
    +-------+------+------+
    | carid | an   | be   |
    +-------+------+------+
    |     3 | AN   | BE   |
    +-------+------+------+
    1 row in set (0.00 sec)
    
    mysql>
    
    Grüße
    Thomas
     
  5. Bubas

    Bubas Neuer Benutzer

    AW: Beide Bedingungen müssen erfüllt sein

    Hey Thomas,

    woow sieht richtig spannend aus. Kann ich das einfach so in Oracle kopieren und ausführen? Ich werde morgen berichte, wie es gelaufen ist.

    Vielen Dank im Vorraus :)
    Bis morgen
     
  6. Bubas

    Bubas Neuer Benutzer

    AW: Beide Bedingungen müssen erfüllt sein

    Genau das scheint es zu sein, doch die Abrage funktioniert so nicht in Oracle. Wie es aussieht kennt es keinen Befehl "join" :(

    Wie muss man das für Oracle umschreiben?
    THX
     
  7. thomas_w

    thomas_w Datenbank-Guru

    AW: Beide Bedingungen müssen erfüllt sein

    Das ORACLE keinen JOIN kennt, kann ich mir ehrlich nicht vorstellen, ausser es handelt sich um eine ur-uralte ORACLE-Version. Der Fehler liegt garantiert wo anders. Die Abfrage entspricht ziemlich genau dem SQL-Standard.

    Zeige doch mal den SQL-Fehler, den ORACLE ausgibt.

    Grüße
    Thomas
     
Die Seite wird geladen...

Diese Seite empfehlen