Ergebnis 1 bis 8 von 8

Thema: Ausgabe von nicht vorhandenen Werten

  1. #1
    tbaumann ist offline Neuer Benutzer
    Registriert seit
    06.04.2008
    Beiträge
    3

    Beitrag Ausgabe von nicht vorhandenen Werten

    Hallo,

    ich habe ein Frage wie wann am besten nicht vorhandene Werte ausgeben kann.

    Folgende Tabelle: a

    stadt |nummer
    ------------------
    Leipzig | 4342
    Bochum | 2334
    Leipzig | 3455
    Bochum | 5555
    Leipzig | 4444
    ....

    Nun möchte ich prüfen, ob bestimmte nummern in Leipzig vorhanden sind oder nicht.

    Mit dieser Anweisung bekommt man schnell die Liste der vorhandenen nummern

    select *
    from a
    where stadt='Leipzig' and
    (nummer = '4342' or
    nummer = '3455' or
    nummer = '5555')

    Die Ausgabe ist:

    Leipzig | 4342
    Leipzig | 3455

    Was mich aber wirklich interessiert, ist das die Nummer 5555 nicht vorhanden ist. Welche Abfrage muss man anstellen damit man zu dieser Ausgabe kommt, also die nummer ausgeben die nicht vorhanden ist:

    5555


    Grüße,

    Thomas

  2. #2
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Das sieht nach einem Problem für Normalisierung aus.
    Wenn du die Städte und die zugehörigen Nummern trennst und in eine 1:n Tabelle auslagerst, kannst du mittels COUNT() abfragen, ob eine Nummer für eine Stadt existiert oder nicht.

    Wenn ich dein Problem jetzt verstanden habe ...
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  3. #3
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von tbaumann Beitrag anzeigen
    Hallo,

    ich habe ein Frage wie wann am besten nicht vorhandene Werte ausgeben kann.
    Was nicht vorhanden ist, kann nicht ausgegeben werden...

    Folgende Tabelle: a

    stadt |nummer
    ------------------
    Leipzig | 4342
    Bochum | 2334
    Leipzig | 3455
    Bochum | 5555
    Leipzig | 4444
    ....

    Nun möchte ich prüfen, ob bestimmte nummern in Leipzig vorhanden sind oder nicht.


    Was mich aber wirklich interessiert, ist das die Nummer 5555 nicht vorhanden ist. Welche Abfrage muss man anstellen damit man zu dieser Ausgabe kommt, also die nummer ausgeben die nicht vorhanden ist:

    5555


    Grüße,

    Thomas

    Code:
    test=*# select * from a;
      stadt  | nummer
    ---------+--------
     leipzig |   4342
     bochum  |   2334
     leipzig |   3455
     bochum  |   5555
     leipzig |   4444
    (5 rows)
    
    Time: 0.947 ms
    test=*# select nummer from a where nummer in(4342,3455,5555) and stadt != 'leipzig';
     nummer
    --------
       5555
    (1 row)
    Ansonsten: siehe Antwort von ads.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  4. #4
    tbaumann ist offline Neuer Benutzer
    Registriert seit
    06.04.2008
    Beiträge
    3

    Standard

    Hallo Andreas, das ist ja gerade mein Problem. Ich möchte daten ausgeben die nicht vorhanden sind. Die angegebene Tabelle ist nur ein Beispiel, würde z.B. der Eintrag Bochum mit 5555 nicht vorhanden sein, denke ich das die von dir genannte Abfrage auch nicht die 5555 liefert.

  5. #5
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.056

    Standard

    Nun, ich weiss ja immer noch nicht genau, wo du hinmöchtest - aber sagt dir Normalisierung von Daten etwas?
    Vielleicht bekommst du eine Idee für dein Problem, wenn du deine Tabellenstruktur dahingehend überarbeitest.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  6. #6
    tbaumann ist offline Neuer Benutzer
    Registriert seit
    06.04.2008
    Beiträge
    3

    Standard

    Hallo ads,

    tut mit leid Normalisierung von Daten sagt mir zur Zeit nichts, werde ich mir aber noch anschauen. Eventuell drücke ich mich etwas unverständlich aus, oder das meine Abfrage ist mit SQL nicht zu realisieren und die Auswertung muss hinterher in einem perl script erfolgen.

    Im oben genannten Bespiel habe ich drei Nummern 4342,3455,5555 und möchte nun prüfen ob diese Nummern in der Stadt Leipzig existieren. Die Datenbank die ich abfragen muss ist eine nicht von mir verwaltete, ich kann dort nur 'select' absetzen. Ein Änderung in der DB ist definitiv nicht möglich.

    Ok die vorhandenen Rufnummern, bekomme ich ja schnell raus. Leider brauche ich diese Information nicht, sondern die Information welche Einträge nicht in der Tabelle meinen Suchkriterien entsprachen, sprich 5555. Eventuell verlange ich ja zuviel, oder ich sollte einfach die Ausgabe von den vorhandenen Rufnummern mit einem perl script auswerten und dann die nicht gefundenen Werte aus meiner Inputliste ausgeben.


    Grüße,

    Thomas

  7. #7
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von tbaumann Beitrag anzeigen
    Hallo Andreas, das ist ja gerade mein Problem. Ich möchte daten ausgeben die nicht vorhanden sind. Die angegebene Tabelle ist nur ein Beispiel, würde z.B. der Eintrag Bochum mit 5555 nicht vorhanden sein, denke ich das die von dir genannte Abfrage auch nicht die 5555 liefert.
    Dann nehme:

    Code:
    test=*# (select 'leipzig',4342 union select 'leipzig',3455 union select 'leipzig',5555) except select * from a where stadt='leipzig' and nummer in (4342,3455,5555);
     ?column? | ?column?
    ----------+----------
     leipzig  |     5555
    (1 row)
    Schön ist vermutlich was anderes.

    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  8. #8
    akretschmer ist gerade online Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von tbaumann Beitrag anzeigen
    Hallo ads,

    tut mit leid Normalisierung von Daten sagt mir zur Zeit nichts,

    Thomas
    Sagt Dir Google wenigstens was? Wenn Du dort als Suchbegriif "Normalisierung von Daten" reinkippst, ist gleich der erste Eintrag ein zielführender, Wikipedia.

    An *das war einfach* dreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 01.04.2011, 01:17
  2. inet: Alle vorhandenen Subnets
    Von orkano im Forum SQL
    Antworten: 3
    Letzter Beitrag: 03.03.2011, 09:00
  3. Like mit vielen werten
    Von Painstation im Forum SQL
    Antworten: 4
    Letzter Beitrag: 26.07.2010, 09:17
  4. XML-Ausgabe?
    Von karl_ha im Forum Allgemeines
    Antworten: 9
    Letzter Beitrag: 18.02.2010, 09:19
  5. Frage Text hinter vorhandenen Text in Spalte setzten
    Von tigerkne im Forum SQL
    Antworten: 1
    Letzter Beitrag: 06.11.2008, 10:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum