1. Wenn Ihr uns das erste Mal besucht, lest euch bitte zuerst die Foren-Regeln durch.
    Information ausblenden

Neu SQL Abfrage - Management Studio

Dieses Thema im Forum "User helfen Usern bei Fragen zur JTL-Wawi" wurde erstellt von ninoboender, 6. Dezember 2017.

  1. ninoboender

    ninoboender Mitglied

    Registriert seit:
    3. August 2014
    Beiträge:
    108
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hallo zusammen,

    ich möchte die Anzahl an „Artikelpositionen“ wissen:

    wo das Produkt„Hinweis“ leer ist und nicht die Artnr. „mug“ - „matte“ - „wm-htp“ entspricht und der Auftrag nicht zurückgehalten oder versendet ist

    Ich würde mich über ein Feedback freuen :)

    Gruß Nino Boender
     
  2. gutberle

    gutberle Gut bekanntes Mitglied

    Registriert seit:
    29. März 2011
    Beiträge:
    1.203
    Zustimmungen:
    262
    Punkte für Erfolge:
    83
    Hi Nino,

    versuch's mal hiermit ...
    Code:
    SELECT COUNT(kBestellPos) FROM tbestellpos AS t1
        INNER JOIN tBestellung AS t2 ON t2.kBestellung=t1.tBestellung_kBestellung
        WHERE cHinweis='' AND cArtNr NOT LIKE 'mug' AND cArtNr NOT LIKE 'matte' AND cArtNr NOT LIKE 'wm-htp'
            AND nKomplettAusgeliefert=0 AND kRueckhalteGrund=0
    
    Zwei kleine Erläuterungen...

    1. Der Code prüft mit NOT LIKE, ob die Artikelnummer die gewünschten Ausschlüsse enthält, nicht ob die Artikelnummer einer der Ausschlüsse ist. Der SQL Code würde also z.B. auch bei einer Artikelnummer "Bastmatten" anschlagen. Willst Du das nicht, musst Du stattdessen cArtNr='matte', usw. schreiben.

    2. Bestellungen, zu denen noch gar keine (Teil-)Lieferung stattgefunden hat, haben in der Tabellenspalte dLieferdatum den Wert NULL stehen, sind also leer. Du schreibst oben, dass die Bestellung "nicht versendet" sein soll. Ich würde das so verstehen wie "Versand abgeschlossen", deshalb habe ich die Tabellenspalte nKomplettAusgeliefert verwendet.

    Willst Du aber stattdessen nur Bestellpositionen gezählt haben, die zu Bestellungen gehören, die noch gar keine (Teil-)Lieferung hatten, änderst Du nKomplettAusgeliefert=0 einfach in dLieferdatum IS NULL ab.

    Gruß,
    Ingmar
     
  3. ninoboender

    ninoboender Mitglied

    Registriert seit:
    3. August 2014
    Beiträge:
    108
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Hallo Ingmar, VIELEN DANK! Ich bekomm jedoch folgende Fehlermeldung.
     
  4. ninoboender

    ninoboender Mitglied

    Registriert seit:
    3. August 2014
    Beiträge:
    108
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    screenshot fügt er nicht bei, sorry!

    Meldung 208, Ebene 16, Status 1, Zeile 1
    Ungültiger Objektname 'tBestellpos'.
     
  5. gutberle

    gutberle Gut bekanntes Mitglied

    Registriert seit:
    29. März 2011
    Beiträge:
    1.203
    Zustimmungen:
    262
    Punkte für Erfolge:
    83
    Das oben ist nur die SQL Abfrage selbst. Anders als bei den meisten SQL Tools musst Du im SQL Sever Mgmt Studio vorher noch explizit den DB Kontext setzen, also das hier vorneweg (1x) eingeben ...
    Code:
    USE eazybusiness
    GO
     
  6. ninoboender

    ninoboender Mitglied

    Registriert seit:
    3. August 2014
    Beiträge:
    108
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    ja super, kann man das auch "zeitliche" noch was eingrenzen? z.b. ab 1.11.2017 November bis heute? sorry für das hin und her....
     
  7. gutberle

    gutberle Gut bekanntes Mitglied

    Registriert seit:
    29. März 2011
    Beiträge:
    1.203
    Zustimmungen:
    262
    Punkte für Erfolge:
    83
    Hi Nino,

    ja klar, hier also dann das "Gesamtkunstwerk" ...
    Code:
    USE eazybusiness
    GO
    SELECT COUNT(kBestellPos) FROM tbestellpos AS t1
        INNER JOIN tBestellung AS t2 ON t2.kBestellung=t1.tBestellung_kBestellung
        WHERE cHinweis='' AND cArtNr NOT LIKE 'mug' AND cArtNr NOT LIKE 'matte' AND cArtNr NOT LIKE 'wm-htp'
            AND nKomplettAusgeliefert=0 AND kRueckhalteGrund=0
            AND CONVERT(date,t2.dErstellt) > CONVERT(date,'2017-11-01')
    Die Datumsvergleiche in SQL sind sehr flexibel. Das hier oben ist eine sichere Variante, gehen würde aber auch rechts vom ">" einfach nur '20171101' stehen zu haben, etc.
    Ich würde an Deiner Stelle aber bei der sicheren Variante bleiben, die ist letzlich auch übersichtlicher.

    Gruß,
    Ingmar
     
  8. ninoboender

    ninoboender Mitglied

    Registriert seit:
    3. August 2014
    Beiträge:
    108
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    vielen dank! kann es sein, dass er "Freipositionen" mitzählt?
     
  9. Dustin

    Dustin Aktives Mitglied

    Registriert seit:
    14. Mai 2008
    Beiträge:
    2.705
    Zustimmungen:
    20
    Punkte für Erfolge:
    38
    Ort:
    Enger
    And nType = 1 dann nimmt er nur Artikel
     
  10. gutberle

    gutberle Gut bekanntes Mitglied

    Registriert seit:
    29. März 2011
    Beiträge:
    1.203
    Zustimmungen:
    262
    Punkte für Erfolge:
    83
    Ja, das tut er nur dann nicht, wenn man ihm sagt, dass er das nicht soll, von alleine kommt er nicht darauf ... :)
    Probier's mal selber, die Spalte heißt nType, Freipositionen haben den Wert 0, Versandpositionen den Wert 2.
     
  11. ninoboender

    ninoboender Mitglied

    Registriert seit:
    3. August 2014
    Beiträge:
    108
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    so würde es aussehen, macht das sinn?

    USE eazybusiness
    GO
    SELECT COUNT(kBestellPos) FROM tbestellpos AS t1
    INNER JOIN tBestellung AS t2 ON t2.kBestellung=t1.tBestellung_kBestellung
    WHERE cHinweis='' AND cArtNr NOT LIKE 'mug' AND cArtNr NOT LIKE 'matte' AND cArtNr NOT LIKE 'wm-htp'
    AND nKomplettAusgeliefert=0 AND kRueckhalteGrund=0 AND nType=1
    AND CONVERT(date,t2.dErstellt) > CONVERT(date,'2017-11-01')
     
    Zuletzt bearbeitet: 7. Dezember 2017
  12. ninoboender

    ninoboender Mitglied

    Registriert seit:
    3. August 2014
    Beiträge:
    108
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    kann es sein, dass er mit der Suche AND cArtNr NOT LIKE 'mug' - "NUR" nach Mug sucht, nicht aber z.b. "mug-black" als Artnr. beachtet bei dieser Ausschluss-Suche?
     
  13. Dustin

    Dustin Aktives Mitglied

    Registriert seit:
    14. Mai 2008
    Beiträge:
    2.705
    Zustimmungen:
    20
    Punkte für Erfolge:
    38
    Ort:
    Enger
    dann muss es NOT LIKE 'mug%' heißen dann nimmt er auch alles was nach "mug-" kommt!
     
  14. ninoboender

    ninoboender Mitglied

    Registriert seit:
    3. August 2014
    Beiträge:
    108
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    VIELEN DANK IHR LIEBEN! Happy day und schöne Weihnachten!
     

Diese Seite empfehlen

Verstanden Weitere Informationen

JTL-Software benutzt Cookies, teilweise von Drittanbietern, um Funktionalitäten auf unseren Webseiten zu ermöglichen.