Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

Hi Frank,

ne so meinte ich das nicht.

Ich möchte die Summe zwischen zwei Datensätzen bilden. Irgendwelchen.

Wie geht das?

lg

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

Wie kommst Du auf fünf?

1 , 2 , 4

2 , 1 , 3

Sind bei mir aber sieben.

Frank

ja sorry habe mich verrechnet:)

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 von streffin

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

ä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 von Corto |sX|

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

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.