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

MySQL Abfrage aus 2 Tabellen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Barcas, 22 Juli 2016.

  1. Barcas

    Barcas Neuer Benutzer

    Hallo zusammen,

    ich bin absoluter sql Anfänger und habe ein kleines Problem, bei dem ich nicht weiter komme.

    Ich habe 2 Tabellen.
    In Tabelle1 befinden sich sämtliche Produktdaten inklusive der Spalte EAN
    In der Tabelle2 befinden sich die Spalten EAN und Preis.


    Die Spalten EAN aus Tabelle 1 und Tabelle 2 sollen nun verglichen werden. Als Ergebnis sollen
    sämtliche Einträge aus Tabelle1 geliefert werden deren EANs nicht in Tabelle 2 vorkommen.

    Vielen Dank schonmal für eure Hilfe
    Barcas
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Dafür gibt es im SQL-Standard EXCEPT:

    Code:
    test=*# select * from tab1;
     ean  |  name   
    ------+-----------
     ean1 | produkt 1
     ean2 | produkt 2
     ean3 | produkt 3
    (3 Zeilen)
    
    test=*# select * from tab2;
     ean  
    ------
     ean2
    (1 Zeile)
    
    test=*# select ean from tab1 except select * from tab2;
     ean  
    ------
     ean3
     ean1
    (2 Zeilen)
    
    test=*# select * from tab1 where ean in (select ean from tab1 except select * from tab2);
     ean  |  name   
    ------+-----------
     ean1 | produkt 1
     ean3 | produkt 3
    (2 Zeilen)
    
    test=*#
    
     
  3. akretschmer

    akretschmer Datenbank-Guru

    Da MySQL nicht konform zum SQL-Standard ist bzw. diesen großflächig ignoriert, wirst Du einen anderen Weg gehen müssen - der hier aber trivial ist:

    Code:
    test=*# select tab1.* from tab1 left join tab2 using (ean) where tab2.ean is null;
     ean  |  name   
    ------+-----------
     ean1 | produkt 1
     ean3 | produkt 3
    (2 Zeilen)
    
    test=*#
    
    Btw.: in PostgreSQL hättest Du für EAN einen eigenen Datentyp zur Verfügung, der die Werte nebenbei validiert.
     
  4. Barcas

    Barcas Neuer Benutzer

    Danke akretschmer.
    Mit Except habe ich es hinbekommen.
     
    akretschmer gefällt das.
  5. akretschmer

    akretschmer Datenbank-Guru

    MySQL kann EXCEPT?
     
  6. Barcas

    Barcas Neuer Benutzer

    Es war eine SQL Abfrage, doch nicht MySQL:D
     
  7. ukulele

    ukulele Datenbank-Guru

    Mit NOT IN ( Subselect ) wäre das aber auch noch lösbar.
     
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