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

Where Abfrage - Mehrere Spalten prüfen, >1 Einträge zeigen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von littleman, 23 Juni 2017.

  1. littleman

    littleman Benutzer

    Hallo zusammen,

    ich wusste jetzt nicht wie ich das Thema bennen sollten, aber ich werde hier mal mein kleines Problem erläutern.
    Ich habe eine Tabelle mit folgenden Spalten:
    ID, Name, E-Mail, Nr1, Nr2, Nr3, Nr4

    Ein Eintrag darf nur eine Nummer haben. Alle weiteren Spalten sind mit NULL.
    Ich möchte jetzt eine Abfrage starten die ein Select macht, und mir die zeigt die mehr als einen Eintrag haben in den Spalten Nr(x).

    Bsp.:

    1 Peter peter@peter NULL NULL NULL 123456789
    2 A a@a NULL 987654321 NULL 123456789
    3 B b@b NULL NULL NULL 123456789

    Ausgabe:

    2 A a@a NULL 987654321 NULL 123456789
     
  2. ukulele

    ukulele Datenbank-Guru

    Dein Tabellenaufbau ist falsch, daher artet das auch in Arbeit aus.
    Code:
    SELECT *
    FROM tabelle
    WHERE nr1 IS NOT NULL AND ( nr2 IS NOT NULL OR nr3 IS NOT NULL or NR4 IS NOT NULL )
    OR nr2 IS NOT NULL AND ( nr1 IS NOT NULL OR nr3 IS NOT NULL or NR4 IS NOT NULL )
    OR nr3 IS NOT NULL AND ( nr1 IS NOT NULL OR nr2 IS NOT NULL or NR4 IS NOT NULL )
    OR nr4 IS NOT NULL AND ( nr1 IS NOT NULL OR nr2 IS NOT NULL or NR3 IS NOT NULL )
     
  3. akretschmer

    akretschmer Datenbank-Guru

    folgendes ist vielleicht etwas kürzer:

    Code:
    test=# select * from littleman ;
     id | n1 | n2 | n3 | n4
    ----+----+----+----+----
      1 |  1 |  |  |   
      2 |  2 |  |  2 |   
    (2 rows)
    
    test=# select * from littleman where (case when n1 is null then 1 else 0 end + case when n2 is null then 1 else 0 end + case when n3 is null then 1 else 0 end + case when n4 is null then 1 else 0 end) < 3;
     id | n1 | n2 | n3 | n4
    ----+----+----+----+----
      2 |  2 |  |  2 |   
    (1 row)
    
    test=#
    
    Unabhängig davon ist natürlich das Design fragwürdig.
     
    littleman gefällt das.
  4. littleman

    littleman Benutzer

    Genau das ist es :)
    Vielen Dank
     
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