1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Abfrage auf ID welche jedoch "zerlegt" werden muß

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Terasilimon, 13 Mai 2015.

  1. Terasilimon

    Terasilimon Neuer Benutzer

    Hallo zusammen und schon mal vorab Danke für Euer Interesse an meinem "kleinen" Problem.

    Ich habe folgendes Abfrageproblem:

    Ein Lager wird wie folgt dargestellt:

    Tabelle: Fach-ID / Belegt / Lot-Nr. / Menge / ..../


    Fach_Id :4101001011
    4101001012
    4101001021
    4101001022
    und so weiter, fortlaufend, aufsteigend

    In den Abfragen sollen Dateninhalte bestimmter Zeilen-Felder jeweils der Paarung mit den Endziffern 1-2, miteinander verglichen werden.

    In Lagerplatz 4101001011 muss gleiches Material (Lot-Nr. Zahlenwert) stehen wie in Lagerplatz 4101001012
    In Lagerplatz 4101001011 darf kein Material stehen, wenn Lagerplatz 4101001012 leer ist.
    In Lagerplatz 4101001011 muß gleiche Materialmenge vorhanden sein wie in Lagerplatz 4101001012

    Nun zu meinem Problem. Wie gestalte ich eine passende Abfrage (vor allem für den Report Builder 3.0), um mir die entsprechenden Zeilen der Tabelle anzeigen zu lassen.
    Die Abfrage sollte am Besten automatisch eine Lagererweiterung, und somit auch eine Tabellenerweiterung mitmachen können. Es würde lediglich die Anzahl an Fach_Id's erweitert.


    MfG

    Terasilimon
     
  2. Distrilec

    Distrilec Datenbank-Guru

    Ich hab keine Ahnung was ein Report Builder 3.0 sein soll... :)
    Aber das hier zeigt dir z.B. alle "Fachgruppen" bei denen ungleiche belegt-Status, ungleiches Material oder ungleiche Mengen, etc. vorhanden sind...
    Code:
    Select substring(fach_id, 1, 9) as fach_gruppe
    From lager
    Group By substring(fach_id, 1, 9) having count(*) > 1
    Einfach gesagt: Es zeigt dir eine Fachgruppe an, sobald IRGENDETWAS von fach1 nicht mit fach2 übereinstimmt...

    Wenn du etwas anderes haben willst, solltest du evtl. deine Bitte etwas genauer definieren...
     
  3. Terasilimon

    Terasilimon Neuer Benutzer

    Erst mal Danke an Distrilec, Deine Antwort hat schon mal die passende Anregung gebracht.

    Zur besseren Darstellung kurz erklärt: Laderoboter --> Fach 1---Fach 2
    Fach 1---Fach 2
    etc.
    da die Fächer hintereinander liegend angeordnet sind, muss Fach 1 leer sein, um Fach 2 anfahren zu können.

    Fachbelegung
    Abfragelogik: Fach 1 = 0 & Fach 2 = 1 ist richtig
    Fach 1 = 1 & Fach 2 = 1 ist richtig
    Fach 1 = 1 & Fach 2 = 0 ist falsch

    Material in Fachbelegung:

    Abfragelogik: Fach 1= 0 & Fach 2 =0 ist richtig
    Fach 1 = 0 & Fach 2 = Material A ist richtig
    Fach 1 = Material A & Fach 2 = Material A ist richtig
    Fach1 = Material B & Fach 2 = Material A ist falsch

    derzeit fehlt mir die Idee (und Anwendungserfahrung), wie ich dies in dem MS-Report Builder 3.0 gescheit in die Abfragefelder einbauen kann.
     
  4. ukulele

    ukulele Datenbank-Guru

    Wenn ich dich richtig verstehe suchst du ja nur falsch belegte Fächer, das ginge z.B. so:
    Code:
    SELECT   t1.*,
         t2.*
    FROM   tabelle t1
    LEFT JOIN tabelle t2
    ON     substring(t1.fach_id,1,9) = substring(t2.fach_id,1,9)
    AND     substring(t2.fach_id,9,1) = substring(t1.fach_id,9,1) + 1
    WHERE   t1.belegt = 1
    AND     t2.belegt = 0
    
    Für die Materialbestimmung fehlt mir der Tabellenaufbau aber das geht eigentlich equivalent.
     
  5. Terasilimon

    Terasilimon Neuer Benutzer

    Ist echt nett von Euch, das ihr mir die Syntax und Logik hier erklärt. Wie gesagt, mir steht der Report Builder zur Verfügung, sonst nix. Ich komm nicht via DBMS an die Datenbank ran, sondern muss mir die von einem Reportserver ziehen.
    Daher meine dringlichste Frage, wie bekomme ich die Syntax in dem MS-Report Builder 3.0 für MS-SQL-Server 2008 R2 umgesetzt. Leider habe ich bislang nichts genaues an Antworten gefunden. Und ja^^ ich habe gegoogelt...

    MfG
    Tera
     
  6. ukulele

    ukulele Datenbank-Guru

    Basieren die Reports des Report Viewers nicht auch auf einem SQL Select Statement? Würde mich wundern wenn es anders wäre, helfen kann ich dir aber mit dem Viewer nicht. Ich würde annehmen er holt sich die Daten per Select und bereitet Diese dann optisch auf.
     
  7. Tommi

    Tommi Datenbank-Guru

    Hallo Tera,

    man muss nicht zwingend der ReportBuilder benutzen. Man kann sich auch die Client-Komponenten des SQL Servers installieren. Hierzu gehört auch eine spezielle Version des Visual Studio, die mit installiert werden kann. Diese nennt sich "SQL Server Business Intelligence Development Studio". Das Arbeiten mit Visual Studio hat an dieser Stelle den Vorteil dass man sich ein Projekt anlegen kann, womit auch eine Versions-Historie möglich ist. Mit dem ReportBuilder wird ein Bericht direkt in der Datenbank des Report Servers gespeichert.

    Aber nun zur Antwort auf deine Frage. Wenn der ReportBuilder gestartet ist, findet man auf der linken Seite eine Navigations-Spalte mit Punkten, die mit einem Ordner-Icon voran angezeigt werden.
    Einer dieser Punkte heißt "Datenquellen". Mit Rechts-Klick kann eine neue Datenquelle eingerichtet werden. Das sollte man aber nur machen wenn man diese Datenquelle nur für diesen einen Bericht benötigt. Ansonsten sind freigegebene Datenquellen zu bevorzugen, da diese für mehrere Berichte genutzt werden können!

    Nach anlegen der Datenquelle kann man nun ein Dataset anlegen. In diesem Dataset wird die SQL-Anweisung, die du vorher am Besten im SQL Server Management Studio vorbereitet und getestet hast, eingefügt.
    Das Dataset verweist auf die zuvor angelegte Datenquelle, womit dann der Verweis zwischen SQL-Abfrage und der SQL Server Instanz festgelegt ist.

    Dieses Dataset kannst du dann in einem grafischen Element (Tabelle, Matrix, Diagramm etc.) hinterlegen, womit dir dann die Daten zur Darstellung und auch für weitere Berechnungen innerhalb dieses Elements verfügbar sind.

    Der Report Server ist wesentlich mächtiger als viele glauben. Es gibt auch an vielen Stellen Fallstricke zu beachten, die man nicht über "learning by doing" auf die Reihe bekommt.
    Vielleicht solltest du in Betracht ziehen hier eine Schulung zu besuchen, wenn du das beruflich machst.

    Viele Grüße,
    Tommi
     
    Walter, ukulele und Distrilec gefällt das.
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