Zum Inhalt springen

Hackschnitzel

Mitglieder
  • Gesamte Inhalte

    21
  • Benutzer seit

  • Letzter Besuch

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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
  7. 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
  8. Es hat jetzt geklappt. Folgendermaßen: CONCAT(A3,LTRIM(A4)) Danke damit ist mein Problem gelöst. Wünsche euch noch frohe Weihnachten und einen guten Rutsch ins neue Jahr!!!
  9. Ich habs jetzt mit CONCAT gemacht. Mein A5 hab ich als char(29) deklariert und in der select anweisung hab ich CONCAT(A3,A4) geschrieben. Das einzige was mich jetzt noch stört ist, dass er mir zwischen die beiden Nummern ein Leerzeichen setzt. Mein A5 sieht jetzt so aus: 234234 111 Kann man das noch umgehen?
  10. Also beim Beispiel handelt es sich um keine Originaldaten. Deswegen ist die Zahl so lang. Das sollte aber egal sein. Die Versionsnummer finde ich irgendwie nicht heraus. Das Programm mit dem ich arbeite, ist ein SQL-Assistent integriert in einen anderen Programm, daher sehe ich nur diese Versionsnummer. Auf jeden Fall mal Danke, werde die Vorschläge testen und danach Feedback geben.
  11. Dann krieg ich als Fehlermeldung: "Data Type "A3" does not match a Defined Type name". Also A3 und A4 sind integer Werte. Und es ist egal, ob ich mein A5 als integer oder als char nehme, es kommt diese Meldung.
  12. Das hab ich schon ausprobiert. Er rechnet dann die Summe aus (egal, ob ich in der Deklaration char oder integer nehme), genau das will ich vermeiden. Er soll aus 234234 und 111 gleich 234234111 machen.
  13. Hallo Leute, folgendes Problem. Ich hab eine Tabelle. Diese Tabelle will ich spiegel und um eine Spalte ergänzen. Diese neue Spalte soll sich aus zwei anderen Spalten zusammen setzen. Also meine Tabelle heisst Test und hat die Attribute A1, A2, A3, und A4. Meine Tabelle Test2 soll folgendermaßen aussehen: A1, A2, A3, A4 und A5, wobei A5 den Inhalt von A3 + A4 hat. Alle Attribute sind Integer Werte. So weit bin ich: Create Table Test2( A1 integer not null, A2 integer not null, A3 integer not null, A4 integer not null, A5 .................... insert into Test2 select A1, A2, A3, A4, ....................... from Test Danke Gruss hackschnitzel
  14. Hallo Leute, gibt es eine Möglichkeit, anstatt megaviele INSERTs hintereinander zu schreiben, auch einen einzigen Befehl mit allen Werten zuschreiben? Zum Beispiel hat meine Tabelle "Test" nur das Attribut "Nummer" und ich will die Zahlen 1 - 200 einpflegen. Wenn das geht, wie sieht der Befehl dann aus? Gruss Hackschnitzel
  15. Wegen der Versionsnummer muss ich mal genauer nachschauen, da ich einen SQL Assistenten in einem anderen Programm nutze. Ich hab das Problem aber jetzt gelöst. Ich habs folgendermaßen gemacht: 1. Summe aller Preise in den betreffenden Bestellungen: select sum(preis) from bestellungen where bestellid in (select bestellid from bestellungen where artikel='bier') group by bestellid; 2. Anzahl Bestellungen, in denen Bier vorkommt: select count(bestellnummer) from bestellungen where bestellid in (select bestellid from bestellungen where artikel='bier') group by bestellid; 3. Hab Summe durch Anzahl geteilt und hab nun mein Ergebnis. Umständlich, aber ging. Dennoch danke für die Hilfe. Jetzt hab ich nur noch ein Problem. Und zwar: Wie muss die Abfrage aussehen, wenn ich wissen will wieviel Artikel kommen zweimal unter einer Bestellnummer vor ? Oder Wieviel Bestellungen enthalten zweimal den gleichen Artikel?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...