…ein freundliches „Hallo“ allen, die sich mit SQL auskennen.
Ich bastle gerade einen Bericht, in dem ich die Umsatzsumme des Mitarbeiters mit der Personalnr „1“ (Spalte) aus der Tabelle „Personal“ für die im Januar verkauften Produkte aus der Tabelle „Artikel“ mit der Spalte „Einzelpreis“ multipliziere.
Ich möchte den Umsatz des MA 1 für Jan aus der Multiplikation der Kundentermine die von 1 getätigt wurde mal dem Einzelpreis der Tabelle Artikel errechnen.
SELECT Pers.Personalnr,SUM(Art.Einzelpreis)
FROM Personal as Pers
LEFT JOIN Kundentermine as KuTe
ON Pers.Personalnr = KuTe.Personalnr
LEFT JOIN Artikel as Art
ON KuTe.Artikel-Nr = Art.Artikel-Nr
WHERE KuTe.Datum > DATE(‚01.01.2010‘)
and KuTe.Datum
Leider stimmt die Syntax noch nicht. Ich vermute dass Du Abkürzungen verwendet hast.
Fehlermeldung:Syntaxfehler (fehlender Operator) in Abfrageausdruck’Pers.Personalnr = KuTe.Personalnr
LEFT JOIN Artikel as Art
ON KuTe.Artikel-Nr = Art.Artikel-Nr’.
Kannst Du das nochmal ohne Abkürzungen ? - Vielleicht verstehe auch dann endlich.
SELECT Pers.Personalnr,SUM(Art.Einzelpreis)
FROM Personal as Pers
LEFT JOIN Kundentermine as KuTe
ON Pers.Personalnr = KuTe.Personalnr
LEFT JOIN Artikel as Art
ON KuTe.Artikel-Nr = Art.Artikel-Nr
WHERE KuTe.Datum > DATE(‚01.01.2010‘)
and KuTe.Datum From Personal as Pers. Dh. du kannst die Tabelle über Pers ansprechen und musst nicht so viel schreiben (hier also Personal)
Die Abkürzungen sind sinnvoll, weil man bei längerem Code ne Menge Zeit sparen kann. Hier siehst du immer wieder ein Tabellenname ‚as‘ Tabellenkürzel. Hilft dir das weiter?
Leider finde ich hier keinen Fehler…
Grüßl
Hab ich verstanden.
Anscheinend mach da wohl etwas ganz gehörig falsch.
Ich dachte, wenn ich Deinen Code nehme und in eine Abfrage als SQL einsetze, dann würde ich eine einwandfreie Abfrage erhalten.
Aber: „Pustekuchen !“
Nehme ich Den Code und kopiere ihn in die Steuerelementeigenschaft eines ungebundenen Textfeldes in meinem Bericht, bekomme ich auch nur die Meldung #Name?. Hast Du noch eine Idee, woran das liegt ?
ich habe wie beschrieben die drei Tabellen mit den beschriebenen Spalten.
Ich möchte nun in einem Bericht möglichtst aus der Tabelle Kundentermine auswerten, welcher Mitarbeiter aus der Tabelle Personal (Spalte PersonalNr) wieviele Kundentermine (Anzahl) in den einzelnen Monaten gemacht hat und welchen Erlös (Tabelle Artikel=> Spalte Einzelpreis) der Mitarbeiter in den jeweiligen Monaten erwirtschaftet hat.
was Du möchtest, habe ich schon verstanden. Was immer noch fehlt, ist der Grund, warum die Abfrage nicht klappt - Syntaxfehler, Treffermenge leer, ganz was anderes?
Also es erscheint wenn ich eine Abfrage mit dem folgenden SQL konstruiere:
SELECT Pers.Personalnr,SUM(Art.Einzelpreis)
FROM Personal as Pers
LEFT JOIN Kundentermine as KuTe
ON Pers.Personalnr = KuTe.Personalnr
LEFT JOIN Artikel as Art
ON KuTe.Artikel-Nr = Art.Artikel-Nr
WHERE KuTe.Datum > DATE(‚01.01.2010‘)
and KuTe.Datum
hmm, also was mir schonmal übel aufällt Feldnamen
Artikel-Nr , ist weder in `` eingebettet , es konnte ja wohl auch heissen
Artikel - Nr
ich selber benutze solche feldnamen nicht , und wenn dann muss man die halt mal in ``setzen, damit das was da als feldnamen steht nicht anders interpretiert wird.
ich hab’s in Access mit leichten Änderungen nachgebaut:
Bindestrich aus Namen entfernt, ob’s das braucht oder nicht
Date entfernt, habe keine Access-Entsprechnung gefunden
Alle 3 Tabellen in die from-Klausel genommen
Joins durch Where-Klauseln ersetzt
SELECT Pers.Personalnr, Sum(Art.Einzelpreis) AS [Summe von Einzelpreis]
FROM Personal AS Pers, Kundentermine AS KuTe, Artikel AS Art
WHERE Pers.Personalnr=KuTe.Personalnr
And Pers.Personalnr=1
AND KuTe.Artikelnr=Art.ArtikelNr
AND KuTe.Datum>‚01.01.2010‘
And KuTe.Datum
Läuft. Ich glaube, Punkt 3 war das Wesentliche.
SELECT Pers.Personalnr, Sum(Art.Einzelpreis) AS [Summe von
Einzelpreis]
FROM Personal AS Pers, Kundentermine AS KuTe, Artikel AS Art
ich will ja nix sagen aber das ist ja eine unendlich grosse datenmenge die da erzeugt wird. da wird PErosnal mit jedem Kundentermin mit jedem Artikel verknüpft , das echt ein böser querry . Sobald die Datenmengen gross werden wirds unbrauchbar.
JOINS haben ihren sinn , sie einfach wegzulassen ist brutal und nur bei winzigen datenmengen schlau.
…Ihr habt ja recht, wenn Ihr gleich groß denkt und joins verwenden wollt. Aber das ist für einen FrisierSalon mit ca. 10 Angestellten. Also echt überschaubar.
Ich bekomme aber Schwierigkeiten bei den Kriterien !
Ich hab jetzt folgendes versucht einzugeben (Spaltennamen Berichtigt)
SELECT Pers.PersonalNr, Sum(Art.Einzelpreis) AS [Summe von Einzelpreis]
FROM Personal AS Pers, Kundentermine AS KuTe, Artikel AS Art
WHERE Pers.PersonalNr=KuTe.PersonalNr
And Pers.PersonalNr=1
AND KuTe.ArtikelNr=Art.ArtikelNr
AND KuTe.Datum>‚01.01.2010‘
And KuTe.Datum
will ich auch nicht, muss ich aber: Der Optimizer strickt aus einer Where…and…and genau das, was Du mit den Joins machst. Besser gesagt, das Where…and…and ist ein (resp. zwei) Join, auch wenn Du es nicht erkennst.