SQL Abfrage was mache ich falsch dringend

fridolin12

Benutzer
Beiträge
13
Fragestellung:

produkt (ean, bezeichnung, kategorie, ekPreis, listPreis)
filiale (filNr, inhName, strasse, plz)
sortiment (filNr, ean, vkPreis, preisRed, bestand)
kunde (kundeNr, name, bonStufe)
rechnung (rechnungNr, datum, bezahlt, kundeNr, filNr)
rechnungPos (rechnungNr, datum, positionNr, ean, einzelPreis, menge)

Gesucht sind die am besten verkauften Produkte: Geben Sie pro Produktkategorie jendes Produkt aus, das stückmäßig am häufigsten verkauft wurde. Auszugeben sind Kategorie, EAN-Code, verkaufte Stückzahl sowie Umsatz. Sortieren Sie nach Kategorie

Meine Query:
Select k1.gebiet
From kunde k1,auftragskopf ak1,auftragszeile az1
Where Sum(az1.vkpreis*az1.menge)=(Max((Select k1.gebiet,Sum(az1.vkpreis*az1.menge)
From kunde k1,auftragskopf ak1,auftragszeile az1
Where k1.nr=ak1.kunde and ak1.nr=az1.nr
Group by k1.gebiet)))

Fehlermeldung:
Error: Your query has syntax errors.
Description: java.sql.SQLException: ORA-00934: group function is not allowed here

Hilfe bitte wo ist mein Fehler
 
Werbung:
AW: SQL Abfrage was mache ich falsch dringend

Lesbar formatiert sieht die Abfrage so aus:

Code:
SELECT k1.gebiet
FROM   kunde k1,
       auftragskopf ak1,
       auftragszeile az1
WHERE  SUM(az1.vkpreis * az1.menge) = ( Max((SELECT k1.gebiet,
                                                    SUM(az1.vkpreis * az1.menge)
                                             FROM   kunde k1,
                                                    auftragskopf ak1,
                                                    auftragszeile az1
                                             WHERE  k1.nr = ak1.kunde
                                                    AND ak1.nr = az1.nr
                                             GROUP  BY k1.gebiet)) )


Folgendes ist so bzw. an dieser Stelle nicht erlaubt:
- ... WHERE SUM(az1.vkpreis * az1.menge) = ...
- ... = ( Max((SELECT k1.gebiet, ...


Die Abfrage muss in zwei JOINs aufgetrennt werden, dann kann der Vergleich erfolgen.

Grüße
Thomas

 
AW: SQL Abfrage was mache ich falsch dringend

Danke für die rasche Antwort was meinst du genau mit in zwei Joins aufteilen.
Könntest du mir das näher erklären?

Danke im voraus
 
AW: SQL Abfrage was mache ich falsch dringend

ungefähr so ...

Code:
 SELECT *
   FROM ( SELECT ...., SUM(az1.vkpreis * az1.menge) AS menge     ) summe1
   JOIN ( SELECT MAX(...) ... GROUP ...) max1
     ON summe1.menge = max1.menge
  ...
Ohne Tabellenstrukturen und Testdaten ist es leider schwierig zu sagen, wie es genau aussehen sollte.

Grüße
Thomas
 
AW: SQL Abfrage was mache ich falsch dringend

So etwas?

SELECT *
FROM
( Select k1.gebiet,Sum(az1.vkpreis*az1.menge)
From kunde k1,auftragskopf ak1,auftragszeile az1
Where k1.nr=ak1.kunde and ak1.nr=az1.nr
Group by k1.gebiet, SUM(az1.vkpreis * az1.menge) AS menge ) summe1
JOIN
( SELECT MAX(summe1)From kunde k1 GROUP by k1.gebiet) max1
ON summe1.menge = max1.menge


Leider immer noch dieselbe Fehlermeldung
Group funcition not allowed
 
AW: SQL Abfrage was mache ich falsch dringend

Da sind ja auch noch diverse Syntaxfehler drin.
Mal aus dem Stegreif könnte es ungefähr so gehen...

Code:
SELECT *
  FROM   (SELECT k1.gebiet,
                 SUM(az1.vkpreis * az1.menge) AS menge
          FROM   kunde k1,
                 auftragskopf ak1,
                 auftragszeile az1
          WHERE  k1.nr = ak1.kunde
            AND ak1.nr = az1.nr
          GROUP  BY k1.gebiet
         ) summe1
  JOIN (SELECT Max(summe1) AS menge
          FROM   kunde k1
          GROUP  BY k1.gebiet) max1
    ON summe1.menge = max1.menge
Grüße
Thomas
 
AW: SQL Abfrage was mache ich falsch dringend

Danke für die rasche Rückmeldung mit diesem Code bekomme ich eine andere Fehlermeldung nämlich das SUmme1 nicht zugrefen werden kann warum?

Error: Your query has syntax errors. Description: java.sql.SQLException: ORA-00904: "SUMME1": invalid identifier
 
AW: SQL Abfrage was mache ich falsch dringend

Danke für die rasche Rückmeldung mit diesem Code bekomme ich eine andere Fehlermeldung nämlich das SUmme1 nicht zugrefen werden kann warum?

Error: Your query has syntax errors. Description: java.sql.SQLException: ORA-00904: "SUMME1": invalid identifier

Das bedeutet, dass es die Spalte "summe1" in der Tabelle KUNDE nicht gibt. Was möchtest Du überhaupt an der Stelle abfragen? Ein bißchen mithelfen must Du schon.

Gesucht sind die am besten verkauften Produkte: Geben Sie pro Produktkategorie jendes Produkt aus, das stückmäßig am häufigsten verkauft wurde. Auszugeben sind Kategorie, EAN-Code, verkaufte Stückzahl sowie Umsatz. Sortieren Sie nach Kategorie
Wenn ich mir die Frage durchlesen, passt Dein bisheriger Ansatz nicht und darauf habe ich mich ein wenig verlassen und nur nach Syntaxfehlern gesucht.

Grüße
Thomas
 
AW: SQL Abfrage was mache ich falsch dringend

Das bedeutet, dass es die Spalte "summe1" in der Tabelle KUNDE nicht gibt. Was möchtest Du überhaupt an der Stelle abfragen? Ein bißchen mithelfen must Du schon.

Wenn ich mir die Frage durchlesen, passt Dein bisheriger Ansatz nicht und darauf habe ich mich ein wenig verlassen und nur nach Syntaxfehlern gesucht.

Grüße
Thomas
Summe gibt es nicht es ist der Umsatz gefragt preis*menge das ist das große problem!
 
AW: SQL Abfrage was mache ich falsch dringend

Das bedeutet, dass es die Spalte "summe1" in der Tabelle KUNDE nicht gibt. Was möchtest Du überhaupt an der Stelle abfragen? Ein bißchen mithelfen must Du schon.

Wenn ich mir die Frage durchlesen, passt Dein bisheriger Ansatz nicht und darauf habe ich mich ein wenig verlassen und nur nach Syntaxfehlern gesucht.

Grüße
Thomas

Danke aber ich habe JA Die richtigen Ansatze den ich habe derzeit habe ich
RESULT
Sorry! Your query is not correct. ERROR REPORT
Error: Incorrect number of tuples! Description: The following columns are missing in the result of your query:

  • EAN
  • UMSATZ
QUERY RESULT
STUECK KATEGORIE 7 Pflege 3 Ersatz 4 Audio 16 Sonstiges
 
AW: SQL Abfrage was mache ich falsch dringend

Die Originalfrage lauten:

Gesucht sind die am besten verkauften Produkte: Geben Sie pro Produktkategorie jendes Produkt aus,
das stückmäßig am häufigsten verkauft wurde. Auszugeben sind Kategorie, EAN-Code,
verkaufte Stückzahl sowie Umsatz. Sortieren Sie nach Kategorie
Da steht nichts von KUNDE drin, nur die Tabellen PRODUKT und RECHNUNGSPOS sind notwendig.

Gibt es Testdaten zu den Ausgaben? Alles so freihändig rumstochern ist schwierig.

Grüße
Thomas
 
AW: SQL Abfrage was mache ich falsch dringend

Wie sieht es hiermit aus (könnte immer noch falsch sein, wenn mehrfach die gleiche Menge pro EAN eingekauft wird).

Code:
SELECT max.kategorie, max.ean, max.menge AS stueckzahl, max.menge * rp.einzelpreis AS umsatz
  FROM ( SELECT p.kategorie, p.ean, MAX(rp.menge) As menge
           FROM produkt p
           JOIN rechnungpos rp
             ON rp.ean = p.ean
           GROUP BY p.kategorie, p.ean
       ) max
  JOIN rechnungpos rp
    ON rp.ean = max.ean
   AND rp.menge = max.menge
ORDER BY max.kategorie, max.ean;
Grüße
Thomas
 
AW: SQL Abfrage was mache ich falsch dringend

Danke So ist es teilweise richtig
KATEGORIE EAN STUECK UMSATZ

KATEGORIE EAN STUECK UMSATZ Audio 1-4444-652-8-88 1 4500 Audio 7-2881-760-3-70 1 1300 Ersatz 1-256-7700-2-00 1 2200 Ersatz 2-446-7240-9-15 1 22500


Brauche aber pro Produktkategorie das mit den meisten stück das ist mein Problem.
Vielleicht könntest du mir da nich behilflich sein

mfg fridolin
 
AW: SQL Abfrage was mache ich falsch dringend

Vielleicht könntest du mir da nich behilflich sein

Soll ich nun helfen oder nicht? Ein bißchen mehr Konzentration wäre echt nicht schlecht.

Also...

Code:
SELECT max1.kategorie, ean1.ean, max1.menge AS stueckzahl, max1.menge * ean1.einzelpreis AS umsatz
  FROM ( SELECT p.kategorie, MAX(rp.menge) As menge
           FROM produkt p
           JOIN rechnungpos rp
             ON rp.ean = p.ean
           GROUP BY p.kategorie
       ) max1
  JOIN ( SELECT p.kategorie, rp.menge, rp.ean, rp.einzelpreis
           FROM produkt p
           JOIN rechnungpos rp
             ON rp.ean = p.ean
       ) ean1
    ON ean1.kategorie = max1.kategorie
   AND ean1.menge = max1.menge
ORDER BY max1.kategorie;
Grüße
Thomas
 
Werbung:
AW: SQL Abfrage was mache ich falsch dringend

Irgendein Fehler ist noch drin aber trotzdem danke für deine größe Mühe und Zeit hoffe ich kann dir bei einen anderen Thema vielleicht auch mal behilflich sein

mfg fridolin
 
Zurück
Oben