Einsendeaufgaben VBDN14B (SGD)

  • hi, ich mache bei SGD ein fernstudium , Fachinformatiker.
    ich benötige aber etwas hilfe bei den Einsendeaufgaben vom Heft VBDN14B (SQL Server Express, SQL Befehle)

    ich habe ein Problem mit einer bestimmten Abfrage.

    ich möchte eine Liste mit den Feldern: BEZEICHNUNG, PREIS, ANZAHL
    um die daten anzeigen zulassen muss ich die inhalte aus 3 Tabellen infügen lassen.

    so soll es am ende aussehen: siehe Anhang

    hier mein bisheriger code:

    --Einsendeaufgaben VBDN14B (Aufgabe 3c)
    ----------------------------------------
    SELECT
    STR(Name, 15) Bezeichnung, Preis, Anzahl
    FROM
    Positionen INNER JOIN Artikel
    ON Positionen.anr = Artikel.anr
    Bestellungen INNER JOIN Positionen
    ON Bestellungen.anr = Position.anr

    wenn mir da jemand helfen könnte wäre das super.

    Mit freundlichen Grüßen
    Chris :)

  • Anhang habe ich keinen gefunden, aber hier ein Bsp für 3 Tabellen:

    Tab1....Tab2....Tab3

    Tab1...FTab1_1... FTab1_2
    Tab2...FTab_2_1..FTab_2_2
    Tab3...FTab3_1.. .FTab3_2

    SELECT Tab1.FTab1_2, Tab3.FTab3_2
    FROM ((Tab1
    INNER JOIN Tab2 ON Tab1.FTab1_1 = Tab2.FTab_2_2)
    INNER JOIN Tab3 ON Tab2.FTab_2_1 = Tab3.FTab3_1);

    Vielleicht gibt es ein bißchen mehr Informationen?

    Gruß
    hape

  • [ATTACH=CONFIG]986[/ATTACH]


    So soll nach der abfrage das ergebnis aussehen.
    dazu muss ich die daten aus 3 verschiedenen tabellen abfragen damit ich dieses ergebnis erhalte.

    bis auf die datensätze wird mir soweit alles angezeigt also (Bezeichnung, Preis, Anzahl)

    hier das bild in groß: http://www.vb-paradise.de/index.php?page=Attachment&attachmentID=12887&h=c97b0e25ce6c55c07770bda3d29e2bd12aeaaeb7

  • Inner Join fasst Datensätze aus Tabellen zusammen, wenn übereinstimmende Werte in einem
    gemeinsamen Feld vorhanden sind.

    Kannst Du mal die kompletten Tabellen bereitstellen (Entwurf), damit man sieht welche Felder
    verknüpfbar sind.

    gruß
    hape

  • Habe versucht mit Deinen Angaben 3 Tabellen zu erstellen, bestimmt sind Anpassungen nötig.

    Positionen ist die führende, mit allen Angaben.
    Artikel, hier ist der Preis wichtig (Bestellung nur als Info)
    Bestellung, hier ist die Anzahl wichtig (Bestellung nur als Info)

    Verknüpft sind alle Tabellen über das Feld [anr]

    Ich habe mal die Daten aus Deiner Grafik sowie fiktive Daten angelegt.

    Für das Funktionieren:
    Die Daten aus Deiner Grafik kommen in allen 3 Tabellen vor, die fiktiven Daten
    nur in Positionen.

    [ATTACH=CONFIG]987[/ATTACH]
    Grafisch dargestellt sieht die Abfrage wie folgt aus

    [ATTACH=CONFIG]988[/ATTACH]

    Als SQL:
    Du hast geschrieben, das Deine Daten aus 3 Tabellen kommen sollen:

    SELECT Positionen.Bezeichnung, Artikel.Preis, Bestellung.Anzahl
    FROM (Positionen INNER JOIN Artikel ON Positionen.anr = Artikel.anr)
    INNER JOIN Bestellung ON Positionen.anr = Bestellung.anr;

    Wenn die Daten aus einer Tabelle kommen, aber in 3 Tabellen vorhanden sein sollen:

    SELECT Positionen.Bezeichnung, Positionen.Preis, Positionen.Anzahl
    FROM (Positionen INNER JOIN Artikel ON Positionen.anr = Artikel.anr)
    INNER JOIN Bestellung ON Positionen.anr = Bestellung.anr;

    Für beide Abfragen sieht das Ergebnis wie folgt aus:

    [ATTACH=CONFIG]989[/ATTACH]

    Im Prinzip werden bei beiden Abfragen nur die Daten angezeigt, die in allen 3 Tabellen
    vorkommen. Eine Position die nur in einer oder zwei Tabellen vorkommt, wird nicht angezeigt.

    Gruß
    hape

  • ok das ist sehr ausführlich. super damit ist mir auf jedenfall geholfen. ich danke dir :)
    sql ist nicht mein ding, deshalb fällt es mir echt schwer. vielen vielen dank :D

  • Zur Info:
    Der Unterschied zwischen dem Beitrag #6 und #7 ist, der SQL Server hat eine andere Syntax
    als andere SQL-fähigen Anwendungen (z. B. Access). Das muss man beachten.

    Hast Du eigentlich eine Anwendung, außer Access, um auf den SQL-Server zu kommen?

    Wenn nein, solltest Du dir eine MS Visual Studio Express version besorgen.
    Damit kannst Du alle Aufgaben am PC nachstellen.

    Ansonsten geht auch Access.

    Gruß
    hape

  • ok hat super funktioniert.

    eine kleine frage habe ich noch. also ich soll nen tagesumsatz ausrechnen, vom 05.01.2005 - 13.01.2005
    also eine woche anzeigen lassen.
    so ganz funktioniert es nicht. das datum wird mir angezeigt. dann wollte ich das mir der tagesumsatz des jeweiligen tages angezeigt wird. aber nun wird mir nicht mal das datum angezeigt :(

    Abfrage 1: (Nur das datum)

    SELECT CONVERT(nchar(10), datum, 104) Datum
    FROM Bestellungen

    Abfrage 2: (Datum und tagesumsatz)

    SELECT CONVERT(nchar(10), Bestellungen.datum, 104) Datum,
    STR(SUM(anzahl * preis), 12,2) Tagesumsatz

    FROM Bestellungen INNER JOIN
    Positionen ON Bestellungen.bnr = Positionen.bnr INNER JOIN
    Artikel ON Positionen.anr = Artikel.anr
    GROUP BY Bestellungen.datum

    nun bin ich mir nicht ganz sicher ob das so richtig ist.
    mfg chris :)

  • Hi,
    nun wird es langsam kompliziert!

    Bei meinen letzten SQL-Anweisungen bin ich mal davon ausgegangen, dass in keiner
    Tabelle eine Summen, Gruppen, oder sonstige Berechnung durchzuführen ist.
    Wenn nun in der Tabelle Bestellungen auch Datumsangaben sind musst Du doch mal schauen,
    dass Du die Datenblattansicht und die Eigenschaftsansicht der Tabellen hochladen kannst.
    Oder gibt es dafür eine eigene Tabelle?

    Am besten als JPG-Grafik, das sollte auf jedenfall funktionieren.

    Ich habe mal in Access fiktive Daten ausgewertete:
    Daten und Kontrolle habe ich mal in Excel dargestellt:

    [ATTACH=CONFIG]991[/ATTACH]

    Den SQL-Entwurf

    [ATTACH=CONFIG]992[/ATTACH]

    SQL:
    SELECT Bestellung.Datum, Sum([Bestellung].[Anzahl]*[Artikel].[Preis]) AS Tagesumsatz
    FROM (Positionen INNER JOIN Bestellung ON Positionen.anr = Bestellung.anr)
    INNER JOIN Artikel ON Positionen.anr = Artikel.anr
    GROUP BY Bestellung.Datum;

    Ergebnis:

    [ATTACH=CONFIG]993[/ATTACH]

    Dies sollte sich auf dem SQL Server nachstellen lassen.

    Gruß
    hape

  • also ich habe mal einen screenshot von den tabellen und derren spalten gemacht. zwecks abfrage erstellen.evtl. hilft dir das etwas.
    [ATTACH=CONFIG]994[/ATTACH]

    tabellen namen und deren inhalte:

    Artikel(tabelle) --> anr, gnr, name, preis
    Positionspreise(tabelle) --> Bnr, Anr, Anzahl, Preis
    Bestellungen(tabelle) --> bnr, knr, datum,versand, mwstsatz
    Gruppen(tabelle) --> gnr, gruppe
    Positionen(tabelle) --> bnr, anr, anzahl

    aber kann dir die ganze datei mal hochladen damit du es dir mal anschauen kannst, wenn du magst.
    mfg chris :)

  • Hi,
    auf Deinem Bild kann man nichts erkennen, da es nicht skaliert werden kann.
    ----------------------------------------------------------------------------
    Wenn Du eine Hardkopie machst, füge diese in Paint ein (Strg. + V) und benutze
    dann das Auswahlwerkzeug um den wichtigen Teil nochmals auszuschneiden.
    Dann Datei "Neu" und die Frage "Änderung in Unbekannt speichern?" mit "Nein"
    beantworten. Dann wieder (Strg. + V) und speichern als "jpg".
    Der Hintergrund in Paint sollte allerdings nicht zu groß angelegt sein.
    Nun sollte dein Bild auch besser zu lesen sein.
    ----------------------------------------------------------------------------
    ------------------------------------------------------------------------------------------------
    Inhalte sind nicht nur die Feldeigenschaften der Tabellen, sondern auch die Datensätze.
    Geh über VisualStudio auf Deinen Server; Geh auf Datenblattansicht der Tabellen und
    mach davon Bilder, oder schau das Du die Datensätze der Tabellen als Excelfile hier hochladen kannst.
    ------------------------------------------------------------------------------------------------

    Zu Deiner Aufgabe!
    Die Lösung mit Access passt nicht ??

    Für eine mögliche Lösung würde ich die Tabellen

    Artikel(tabelle) --> anr, gnr, name, preis
    Positionspreise(tabelle) --> Bnr, Anr, Anzahl, Preis
    Bestellungen(tabelle) --> bnr, knr, datum,versand, mwstsatz
    wählen. OK??

    • Ausgabe mit mwstsatz ?? Oder ist der schon im Preis inbegriffen??

    Eventuell kannst Du auch, mit Hilfe der #12 - Vorlagen, das Ganze selbst lösen! Schon versucht ??

    Gruß
    hape

  • Ich habe mal fiktive Daten in den 3 Tabellen Artikel, Positionen und Bestellungen
    (ich denke es werden nur diese 3 benötigt) erstellt.

    Preis kommt in zwei Tabellen vor (Unterschied?), sollte in beiden gleich sein
    Habe deshalb den genommen, der direkten Bezug zum Artikel hat.
    Versand sagt mit jetzt nichts.
    Mwst habe ich mal weggelassen, kannst Du aber jederzeit in die Formel mit reinnehmen.
    Je nachdem was Du brauchst.

    Vorgaben in den Tabellen und die Kontrolle:
    [ATTACH=CONFIG]995[/ATTACH]

    Abfrage im SQLServer ohne Datumsfilter

    [ATTACH=CONFIG]996[/ATTACH]


    Abfrage im SQLServer mit Datumsfilter

    [ATTACH=CONFIG]997[/ATTACH]

    Eventuell musst Du das Ganze anpassen, wenn die ausgewählten Tabellen nicht passen.

    Gruß
    hape