Announcement

Collapse
No announcement yet.

Prüfen, ob bestimmter Datensatz vorhanden ist

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

  • Prüfen, ob bestimmter Datensatz vorhanden ist

    Guten Morgen :-)

    Ich habe eine Tabelle tblArtikel, in dieser sind alle angelegten Artikel enthalten.
    Dann gibt es eine weitere Tabelle (tblLager), in dieser sind die Lagerplätze den Artikeln zugeordnet. Eigentlich sollte es in dieser Tabelle zu jedem Artikel einen Standardplatz (Lagerplatz = 1) geben.

    Dies würde ich aber gerne überprüfen. Daher würde ich gerne für alle Artikelnummern prüfen, ob in der Tabelle tblLager der Lagerplatz = 1 vorhanden ist. Evtl. können zu Artikelnummern auch zusätzlich noch andere Lagerplatznummern existieren.

    Dies habe ich zwar versucht, liefert aber keine Ergebnisse
    Code:
    SELECT DISTINCT nummer FROM tblArtikel
      WHERE NOT EXISTS (SELECT nummer FROM tblLager
                    WHERE lagerplatz = 1 AND nummer = '1234');

  • #2
    select tblArtikel.nummer from tblArtikel, tblLager where tblArtikel.nummer=tblLager.nummer and tblLager.lagerplatz!=1
    Christian

    Comment


    • #3
      Leider nicht :-(
      Es werden jetzt auch Datensätze, die lagerplatz = 1 haben angezeigt.

      Comment


      • #4
        Originally posted by Bonaqua View Post
        Leider nicht :-(
        Es werden jetzt auch Datensätze, die lagerplatz = 1 haben angezeigt.
        Geht es denn hier um Existenzprüfung oder darum, welches Flag gesetzt ist?
        Oder anders, gibt es Constraints, die da irgendwas sicherstellen, wenn ja welche?
        Gruß, defo

        Comment


        • #5
          Es geht um Existenzprüfung. Also ob zu jeder Nummer der Lagerplatz 1 in der Tabelle tblLager vorhanden ist.

          Wenn es eben zusätzlich gehen würde, wäre es praktisch, wenn gleich geprüft werden könnte, ob alle Nummern, die in tblArtikel enthalten sind, auch in tblLager sind.

          Comment


          • #6
            So könnte es gehen, es werden alle Artikelnummern ausgegeben, die nur in tblArtikel vorhanden sind oder auch in Lager, aber ohne 1

            [highlight=SQL]
            SELECT a.nummer
            FROM tblArtikel a
            left join (Select nummer from tblLager where lagerplatz = 1) l
            on a.nummer = l.nummer
            and l.nummer is null
            [/highlight]
            Gruß, defo

            Comment


            • #7
              Hallo,

              warum die zweite WHERE Bedingung im Subselect?
              Geht es so nicht?

              [highlight=sql]
              SELECT DISTINCT nummer FROM tblArtikel
              WHERE NOT EXISTS (SELECT nummer FROM tblLager
              WHERE lagerplatz = 1);
              [/highlight]

              Der MSSQL Server könnte auch sowas, was aber inhaltlich defos Lösung entspricht:


              [highlight=sql]
              SELECT tblArtikel.nummer FROM tblArtikel
              LEFT JOIN tblLager ON tblArtikel.Nummer = tblLager.Nummer AND tblLager.lagerplatz = 1
              WHERE tblLager.Nummer IS NULL
              [/highlight]


              Grüße
              Tino
              Ich habs gleich!
              ... sagte der Programmierer.

              Comment


              • #8
                Evtl. können zu Artikelnummern auch zusätzlich noch andere Lagerplatznummern existieren.
                MIch würde nicht wundern wenn Nummer in den beiden Tabellen was unterschiedliches ist und man die gar nicht verknüpfen sollte was wir die ganze Zeit versuchen

                Comment


                • #9
                  Originally posted by tinof View Post
                  [highlight=sql]
                  SELECT tblArtikel.nummer FROM tblArtikel
                  LEFT JOIN tblLager ON tblArtikel.Nummer = tblLager.Nummer AND tblLager.lagerplatz = 1
                  WHERE tblLager.Nummer IS NULL
                  [/highlight]


                  Grüße
                  Tino
                  Danke Tino! Das war die Lösung!

                  Comment


                  • #10
                    @tinof
                    Klar geht es mit der not-exists-Variante mit einer Bedingung weniger.
                    Meine Erfahrung ist, das not Exists kein Rennpferd ist, und zwar mehr oder weniger egal, welche DB.
                    Ich verwende daher eigentlich immer einen OUTER JOIN, um sowas abzufragen.
                    Durch die Unterbedingung xyFlag=1 ist die Outer Join Variante wahrscheinlich auch nicht die schnellste, aber warten wir erstmal, ob überhaupt was gescheites rauskommt.

                    Beide Varianten sollten allerdings nicht nur in MSSQL, sondern in allen gängigen Systemen funktionieren und ein richtiges Ergebnis liefern, außer ..
                    @Ralf Jansen
                    Das wäre sehr amüsant.
                    Gruß, defo

                    Comment

                    Working...
                    X