daniel_bln Geschrieben 11. Dezember 2009 Teilen Geschrieben 11. Dezember 2009 Hallo Leute, ich möchte 2 ziemlich komplizierte SQL Anweisungen erstellen, komme aber leider momentan nicht weiter. Ich habe beispielweise diese Tabelle hier: ID, ID2, Anzahl 1 , 1 , 2 1 , 2 , 4 2 , 1 , 3 Ich möchte jetzt die Summe bilden zwischen den Eintrag wo ID=1 und ID2=1 mit dem Eintrag wo ID = 2 und ID2 = 1. Und immer so weiter wenn man sich vorstellen würde, dass die Tabelle merere Einträge hätte. Ich möchte als explizit bestimmte Zeilen miteinander addieren. Ich habe es schon mit SELECT sum(anzahl) from catchword where ID = 1 AND ID2r=1 und weiter komme ich irgendwie nicht, denn eine weitere AND WHERE würde zum Fehler führen. Die zweite Abfrage wäre,dass ich sage, dass ich den ersten Eintrag löschen will unter der Bedinung, dass Anzahl>0 ist und unter der Bedinungen, dass die Anzahl des dritten Eintrags >0 ist und so weiter halt. Dabei suche ich immer nach der ID und der IDNr. Ich weiß ist nicht so einfach, wäre aber über jede Hilfe und Hinweis sehr dankbar! lg Daniel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 11. Dezember 2009 Teilen Geschrieben 11. Dezember 2009 Hallo, meinst Du das? select id1, sum(anzahl) from test group by id1, id2 [/code] Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
daniel_bln Geschrieben 11. Dezember 2009 Autor Teilen Geschrieben 11. Dezember 2009 Hi Frank, ne so meinte ich das nicht. Ich möchte die Summe zwischen zwei Datensätzen bilden. Irgendwelchen. Wie geht das? lg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 11. Dezember 2009 Teilen Geschrieben 11. Dezember 2009 Dann mach doch mal ein Beispiel mit entsprechendem Ergebnis. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
daniel_bln Geschrieben 11. Dezember 2009 Autor Teilen Geschrieben 11. Dezember 2009 Na zum Beispiel in der Tabelle, die ich angegeben habe, möchte ich die Summe der Anzahl bilden zwischen dem ersten Datensatz(Datensatz mit ID = 1 und ID2 =2) und dem letzten Datensatz (Datensatz mit ID=2 und ID2 = 1). Und zurückbekommen möchte ich gerne als Zahl die 5. lg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 11. Dezember 2009 Teilen Geschrieben 11. Dezember 2009 Wie kommst Du auf fünf? 1 , 2 , 4 2 , 1 , 3 Sind bei mir aber sieben. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
daniel_bln Geschrieben 11. Dezember 2009 Autor Teilen Geschrieben 11. Dezember 2009 Wie kommst Du auf fünf? 1 , 2 , 4 2 , 1 , 3 Sind bei mir aber sieben. Frank ja sorry habe mich verrechnet:) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 13. Dezember 2009 Teilen Geschrieben 13. Dezember 2009 (bearbeitet) ich seh irgendwo nicht so ganz was die beiden datensätze miteinander zu tun haben sollen, wenn beide id´s unterschiedlich sind, warum willst du die aufsummieren ? Btw, "and where" führt mit sicherheit zu nem fehler, versuchs mal mit WHERE <expression> AND <expression2> Bearbeitet 13. Dezember 2009 von streffin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
StJansen1986 Geschrieben 16. Dezember 2009 Teilen Geschrieben 16. Dezember 2009 Hi, hab nicht viel Zeit, aber evtl bringt dich das weiter: select sum(anzahl) from ( select row_number() OVER (order BY id,id2,anzahl) as rn, id,id2,anzahl from tabelle ) as tmp where tmp.rn in (1,2); wenn deine Datensätze in der Tabelle eindeutig sind, wird so eine Nummerierung jeder Zeile vorgenommen ( rn). Darauf kannst du dann einschränken welche Zeilen du alle benötigst. Ähnliches vorgehen sollte auch ggfs. beim Delete helfen um eine Zeile ansprechen zu können Gruß Stefan Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Corto -sX- Geschrieben 16. Dezember 2009 Teilen Geschrieben 16. Dezember 2009 (bearbeitet) ähm, was wird denn hier noch rumoracelt (harhar) wenn das problem lediglich die Syntax war? du kannst soviele AND bedingungen machen wie du lustig bist. Allerdings kannst du so nicht verschiedene bedingungen eines wertes gleichzeitig machen, was aber auch logisch ist. du könntest dir aber das eine select als temporäre Tabelle wegspeichern create table temp_summe as select id,id2,anzahl from table_bla where id1=1 and id2=2; dann kannst du davon die summe nehmen und das mit der summe der ursprungstabelle mit gedrehten where-bedingungen laufen lassen. schau dir auch mal die möglichkeiten von subselects an, damit gehts auch ohne den zwischenschritt der temp_summe tabelle. Bearbeitet 16. Dezember 2009 von Corto |sX| Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
streffin Geschrieben 16. Dezember 2009 Teilen Geschrieben 16. Dezember 2009 du kannst soviele AND bedingungen machen wie du lustig bist. Allerdings kannst du so nicht verschiedene bedingungen eines wertes gleichzeitig machen, was aber auch logisch ist. Auu sei da vorsichtig.... sicher where x=1 and x=2 is sinnfrei, aber syntaktisch richtig. Where x > 5 and x <> 7 hingegen , macht durchaus öfters Sinn, und wird auch öfters gebraucht. Gruß Sven Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Corto -sX- Geschrieben 17. Dezember 2009 Teilen Geschrieben 17. Dezember 2009 da hab ich mich wohl unklar ausgedrückt. natürlich ist es möglich und oft auf sinnvoll ein attribut mit mehreren bedingungen zu begrenzen, nur eben nicht indem mal es so formuliert das es niemals beides gleichzeitig sein kann. x=1 and x=2 wird ja nie so sein. 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.