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

Verschalter Select

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Heiko, 11 März 2014.

  1. Heiko

    Heiko Benutzer

    Hallo Forum,

    ich verliere grad den Glauben....

    Ich fülle eine Tabelle (Stundenzettel) mit Daten von Stundenzetteln. Nun möchte ich die Personen selektieren, die nicht in dieser Tabelle stehen. Dazu sehe ich mir die Personaltabelle an - verknüpft sind diese beiden Tabellen über das Feld Name2.

    Das probiere ich über folgenden Selekt:
    Code:
    select * from Personal
    Where Name2 not in (Select Name2 from Stundenzettel)
    Es gibt definitv Personen die nicht mit Name2 in der Tabelle Stundenzettel stehen. Was mache ich falsch?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Zuerst einmal Kritik:

    Du hast vor knapp 1 Jahr mal 'ne Frage gestellt und eine ganze Reihe von Antworten und Nachfragen bekommen. Tote Hose von Dir. Finde ich nicht fair.

    Du willst aus Stundenzettel was rauslesen? Das ist a bissl komisch formuliert, aber ich glaube zu verstehen, was Du meinst.

    Für mich funktioniert aber die Abfrage:

    Code:
    test=*# create table personal (name text);
    CREATE TABLE
    Time: 191,991 ms
    test=*# create table stundenzettel (name text);
    CREATE TABLE
    Time: 6,612 ms
    test=*# insert into personal values ('max');
    INSERT 0 1
    Time: 0,334 ms
    test=*# insert into personal values ('heiko');
    INSERT 0 1
    Time: 0,153 ms
    test=*# insert into personal values ('anna');
    INSERT 0 1
    Time: 0,132 ms
    test=*# insert into stundenzettel values ('anna');
    INSERT 0 1
    Time: 0,348 ms
    test=*# select * from personal where name not in (select name from stundenzettel);
     name
    -------
     max
     heiko
    (2 rows)
    
    Prüf noch mal, ob Du nicht was verbuchselt hast.
     
  3. Hony%

    Hony% Datenbank-Guru

    Hi Heiko.

    • Besteht eine Fremdschlüsselbeziehung?
    • Wenn nein: Gleicher Datentyp?
     
  4. Heiko

    Heiko Benutzer

    @Horny%

    nein, beides nicht!

    @akretschmer:

    Bei mir bringt dein Beispielcode die Fehlermeldung:
    Die Datentypen text und text sind im equal to-Operator inkompatibel.
     
  5. Heiko

    Heiko Benutzer

    @akretschmer: Sorry, habe ich vorhin nicht gesehen. Mit Text geht es nicht, meine Felder sind vom Typ VARCHAR(40). Damit klappt dann auch dein Beispiel. Allerdings nicht in der Original-DB. Auch dort sind die beiden Felder die ich vergleiche in beiden Tabellen vom Typ Varchar(40). Ich vermute mal - kann es von zu Haus leider nicht einsehen - dass die Collation mir einen Strich durch die Rechnung macht.

    Ich erstelle die Tabelle Stundenzettel mit einem "Select ... INTO from ... . Dabei fasse ich die Tabelle PERSONAL nicht an weil ich alle notwendigen Daten dazu aus zwei anderen Tabellen lesen kann. Ich vergleiche mal die Feldtypen. Eventuell programmiere ich den Abgleich schnell selbst. Komisch kommt mir das aber schon vor...
     
  6. ukulele

    ukulele Datenbank-Guru

    NULL Werte!

    Code:
    select * from Personal
    Where Name2 not in (Select Name2 from Stundenzettel WHERE Name2 IS NOT NULL)
     
  7. akretschmer

    akretschmer Datenbank-Guru

    Wenn da NULL drin stehen kann (also nix), dann halte ich das für einen Designfehler. Da stehen dann 8 Stunden drim, die dem Mitarbeiter NULL zugeordnet werden? FAIL!
     
  8. ukulele

    ukulele Datenbank-Guru

    Ob das Sinn macht interessiert mich eigentlich schon nicht mehr :) . Den Fehler mache ich aber auch des öfteren mal (NULL-Werte nicht ausschließen) und das passt bisher wie die Faust aufs Auge.
     
  9. Heiko

    Heiko Benutzer

    Das ist die Datenbank unseres "ERP" Systems - an der ist nichts normal! Es stehen tatsächlich NULL Werte in den Feldern. Aber zum eigentichen Thema: Ich habe es umgangen indem ich "von Hand" die Tabellen durchsuche.
     
  10. ukulele

    ukulele Datenbank-Guru

    Deine Abfrage müsste dann aber mit der Ergänzung WHERE Name2 IS NOT NULL im Subselect funktionieren, oder?
     
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