Hackschnitzel Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 Hallo, ich hab folgendes Problem. Mal wieder Ich hab ne Tabelle Bestellungen mit Bestnr Preis 1 10 1 20 1 5 2 10 2 10 2 10 ... ich will jetzt die Tabelle so umwandeln, das die Bestnr nur einmal existiert und der jeweilige Preis dann aufsummiert wird. Ich hab es vor indem ich eine neue Tabelle anlege und die dazugehörigen Daten dann inserte. Meine Tabelle soll danach so aussehen: Bestellungen2 mit Bestrnr Preis 1 35 2 30 ... INSERT INTO Bestellungen2 SELECT ????? FROM Bestellungen Wie könnte das ganze aussehen? Gruss Hackschnitzel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Carnie Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 SELECT bestellnr,sum(preis) from bestellungen group by bestellnr Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 9. Januar 2007 Autor Teilen Geschrieben 9. Januar 2007 Das hat wunderbar geklappt. DANKE. Aber ich hab noch was ganz wichtiges vergessen und zwar brauche ich noch eine Zeile. Bestellungen 1 bestnr preis artikel 1 10 cola 1 20 bier 1 5 limo 2 10 cola 2 10 cola 2 10 cola ... Ich will in die Bestellungen2 Tabelle noch eine Spalte. Und zwar, soll mir die Abfrage in die Spalte "drin" eine "1" reinschreiben, wenn unter der jeweiligen bestnr der artikel cola drin vorkommt, ansonsten eine "0". also die Tabelle soll wie folgt aussehen: Bestellungen2 mit bestnr preis drin 1 35 1 2 30 1 ... Wie kann ich das noch mit einbauen? Ursprüngliche Abfrage: INSERT INTO Bestellungen2 SELECT bestnr,sum(preis) FROM Bestellungen GROUP BY bestnr Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 nur so eine idee: wieso machst du dir nicht selbst ein paar gedanken ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 9. Januar 2007 Autor Teilen Geschrieben 9. Januar 2007 Ich bin nicht sonderlich gut in SQL. Hab schon versucht eine Lösung zu finden und es funktioniert nicht so wie ich es will. Ausserdem sehe ich auch gerne alternative Lösungen, die eventuell auch effizienter sind. Deshalb hoffe ich mal das mir noch jemand weiterhelfen kann. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 aber es geht hier nicht um hilfe sondern komplettlösungen. vielleicht ist auch der Kern deiner Aufgabe nicht die Umsetzung sondern das Lernen von SQL ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 9. Januar 2007 Autor Teilen Geschrieben 9. Januar 2007 Also mein Arbeit besteht darin mit anderen Programmen Tabellen auszuwerten. Leider Spielen manche Programme mit der Struktur einiger Tabellen nicht mit. Daher muss ich sie umstrukturieren. Da mir aber die Fachkenntnis in SQL etwas fehlt, versuche ich nur dies etwas zu beschleunigen, da es nicht meine Arbeit wiederspiegelt. Ich hoffe ich habe einen nötigen Grund, um eine Antwort zu erhalten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 9. Januar 2007 Autor Teilen Geschrieben 9. Januar 2007 Hier mal noch meine fehlerhafte Lösung: INSERT INTO Bestellungen2 SELECT bestnr, SUM(preis), CASE WHEN Artikel = 'Cola' THEN 1 ELSE 0 END FROM Bestellungen GROUP BY bestnr Fehlermeldung: selected non-aggregate values must be part of the associated group. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 INSERT INTO Bestellungen2 SELECT bestnr, SUM(preis), CASE Artikel drin WHEN "Cola" THEN 1 ELSE 0 END FROM Bestellungen GROUP BY bestnr Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Reinhold Geschrieben 9. Januar 2007 Teilen Geschrieben 9. Januar 2007 INSERT INTO Bestellungen2 SELECT bestnr, SUM(preis), CASE Artikel drin WHEN "Cola" THEN 1 ELSE 0 END FROM Bestellungen GROUP BY bestnr Das hier sollte wohl klappen, obwohl mir der Sinn der Aufgabe verborgen bleibt: INSERT INTO Bestellungen2 SELECT bestnr, SUM(preis), CASE Artikel drin WHEN "Cola" THEN 1 ELSE 0 END FROM Bestellungen GROUP BY bestnr, CASE Artikel drin WHEN "Cola" THEN 1 ELSE 0 END[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 10. Januar 2007 Autor Teilen Geschrieben 10. Januar 2007 Ich weiss das es wenig Sinn macht, ich versuche nur für mein Problem eine leichte Aufgabe zu finden. Dies sind auch keine Originaldaten. Aber nochmal zurück. Nach ein bissl tüffteln mach er jetzt bei dieser Abfrage etwas: INSERT INTO Bestellungen2 SELECT bestnr, SUM(preis), CASE WHEN Artikel = 'Cola' THEN 1 ELSE 0 END FROM Bestellungen GROUP BY bestnr, CASE WHEN Artikel = 'Cola' THEN 1 ELSE 0 END Nur jetzt bekomme ich als Ergebnis, 1 10 1 1 25 0 2 30 1 ... es sollte aber, wenn möglich 1 35 1 2 30 1 ... rauskommen. Er rechnet jetzt zu jeder bestnr eine Summe ohne Cola und eine Summe nur mit Cola aus. Aber er soll halt die komplette Summe ausrechnen, und in der dritten Spalte einfach nur angeben, ob in der Summe Cola enthalten ist oder nicht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
baba007 Geschrieben 10. Januar 2007 Teilen Geschrieben 10. Januar 2007 CASE WHEN Artikel = 'Cola' THEN 1 ELSE 0 END das funktioniert meines wissen nicht. artikel muss nach Case und vor WHEN kommen. ausserdem hat es im group by befehl nichts zu suchen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hackschnitzel Geschrieben 10. Januar 2007 Autor Teilen Geschrieben 10. Januar 2007 Also wenn ich den case befehl im group by nicht unterbringe, bekomme ich immer die Fehlermeldung: "selected non-aggregate values must be part of the associated group." Und wenn ich Artikel nach case und vor when schreibe, akzeptiert er die Syntax nicht. Also so wie ich es hab, führte er auf jeden Fall mal aus, aber nicht das was ich wollte. Frag mich bitte nicht nach der Versionsnummer der Datenbank, hört sich dumm an, aber die finde ich nirgens. Es ist ein SQL-Assistent aus einem anderen Programm. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.