Announcement

Collapse
No announcement yet.

SQL Abfrage, ob Eintrag nicht existiert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Abfrage, ob Eintrag nicht existiert

    Hallo,
    gibt es eine SQL Abfrage, in der man schlicht abfragt, ob kein Eintrag existiert.

    z.b. SELECT XXX FROM Table WHERE Name (ungleich) TEST;

    Also, in der Spalte "Name" soll es dann nirgends einen Eintrag TEST geben.

    Danke und viele Grüße
    Yvonne

  • #2
    Hallo,

    Ich hoffe ich hab dich richtig verstanden.

    SELECT count(*) FROM Table WHERE Name = TEST

    Abfrage liefert 0, wenn es TEST nicht gibt.

    Comment


    • #3
      Also eigentlich sollte das in ein anderes select mit rein.

      SELECT ID FROM TABLE WHERE (nachname LIKE 'Schmidt') AND (TEST in einer bestimmten Spalte nicht exisitert)

      Comment


      • #4
        Originally posted by Jedda View Post
        SELECT ID FROM TABLE WHERE (nachname LIKE 'Schmidt') AND (TEST in einer bestimmten Spalte nicht exisitert)
        Wie? Also, der Ungleich-Operator ist != bzw. NOT
        Wenn Du alle Zeilen der Tabelle haben möchtest, wo der Nachname "Schmidt" ist und in einer (einizigen) bestimmten Spalte nicht "TEST" drinsteht, ja dann

        select * from table where nachname = 'Schmidt' and spalte != 'TEST'

        oder

        select * from table where nachname = 'Schmidt' and spalte not like '%TEST%'


        Falls nicht, dann solltest Du Dir erst einmal genau überlegen, was Du eigentlich wissen möchtest und genau danach auch fragen. ;-)
        Dirk

        Comment


        • #5
          ja, ok vielleicht habe ich mich blöd ausgedrückt, sorry.

          Vielleicht ist ein Beispiel am sinnvollsten.
          Ich habe eine Tabelle mit 5 Spalten TaskID, State , TestID, Name, BatchID.
          TaskID kann immer nur einmal vorkommen, die anderen IDs können mehrmals in einer Spalte vorkommen.
          Nun möchte ich genau die niedriegste BatchID herausfinden, bei der es noch keinen Eintrag Name = TEST gibt.
          Das Problem ist, dass es z.b. 4 Einträge zur gleichen BatchID geben kann. Für diese gibt es unterschiedliche Namen. Und unter diesen darf es zu der BatchID keinen Eintrag TEST geben.
          Ich weiß leider nicht, wie ich es geschickter erklären soll.
          Wenn ich den SQL Befehl:

          SELECt min(BatchID) FROM Table WHERE (Name NOT LIKE 'TEST') dann ist klar, dass ich trotzdem die falsche BatchID bekomme, denn es kann ja einen Eintrag geben wo Name = HAUS ist.

          Also vlt. einfacherer. Innerhalb der Gruppe zu einer BatchID darf es keinen Eintrag Name = TEST geben.

          :-)))

          Comment


          • #6
            Originally posted by Jedda View Post
            SELECt min(BatchID) FROM Table WHERE (Name NOT LIKE 'TEST') dann ist klar, dass ich trotzdem die falsche BatchID bekomme, denn es kann ja einen Eintrag geben wo Name = HAUS ist.
            Äh, häh? "HAUS" ist nicht gleich "TEST", deshalb würde HAUS gefunden, und wenn HAUS die kleinste Batch-ID hätte, dann würde diese Abfrage auch diese ID ausspucken. Ich raffs nicht.

            Schreibe uns doch einfach mal ein Dutzend Testdaten hier hin und das, was dann herauskommen soll, vielleicht klappt's so.
            Dirk

            Comment


            • #7
              Hallo Yvonne,

              du meinst sicherlich sowas hier:
              [highlight=sql]
              select min(o.BatchID)
              from Tabelle o
              where not exists (
              select 'X' from Tabelle i
              where i.Name = 'Test'
              and i.BatchID = o.BatchID)
              [/highlight]

              Gruß Falk
              Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

              Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

              Comment


              • #8
                Sorry, ich habe mich auch mega dämlich ausgedrückt.
                Wahrscheinlich ist es total simple.
                Bei mir sind alle Werte in einer einzigen Tabelle.

                Ich habe z.b. folgende Tabelle: (sorry, kann man nicht so gut erkennen)
                (es sind 3 Spalten, Inhalt jedes Feldes ist eine Zahl)
                ID ID1 ID2
                1 1 1
                2 2 1
                3 3 1
                4 1 2
                5 1 3

                Nun möchte ich die min(ID2) raussuchen, zu der es keine ID1 größer 1 gibt, das heisst bezogen auf alle Werte der Spalte ID1.

                Das Ergebnis wäre hier ID2 = 2.

                Ist das vielleicht eher zu verstehen?? Bin noch nicht wirklich fit in SQL, sicher ist das ganz einfach.

                Danke!!!

                Comment


                • #9
                  Hallo,

                  das geht trotzdem genauso wie ich es schon geschrieben habe. Also nun nochmal mit deinem Beispiel:
                  [highlight=sql]
                  select min(o.ID2)
                  from Tabelle o
                  where not exists (
                  select 'X' from Tabelle i
                  where i.ID1 = o.ID2)
                  [/highlight]

                  Gruß Falk
                  Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                  Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                  Comment


                  • #10
                    SELECT min(o.ID2) FROM Tabelle o
                    WHERE NOT EXISTS
                    ( SELECT 'X' FROM Tabelle i WHERE i.ID2 = o.ID2 and i.d1>1)
                    docendo discimus

                    Comment

                    Working...
                    X