Jump to content

Max. Wert + 1


112
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

Hallo,

 

ich bin neu in Sachen SQL unterwegs und brauche Hilfe.

 

Ich habe in meiner Tabelle drei Spalten. In der ersten Spalte steht die Kostenstelle, in der zweiten Spalte eine 10-Stellige Nummer.

 

zum Beispiel:

 

30300        303000012

40400        404000059

12000        120000121

 

In der Abfrage soll jetzt je nach Kostenstelle die höchste Nummer geholt und um den Wert 1 erhöht und ausgegeben werden.

 

zum Beispiel:

 

Es wird abgefragt nach der Kostenstelle 30300. Der aktuelle Wert bei 30300 ist 303000012. Jetzt soll zu der 303000012 +1 addiert, zurückschrieben und ausgeben werden.

 

Also Ergebnis muss in der Tabelle unter 30300 danach stehen:    30300   303000013

 

Wie lautet hierzu die Abfrage?

 

 

 

 

 

Link to comment

Moin,

 

 

Und wenn das Ergebnis stimmt, ersetzt du das "Wähle aus"-Statement durch das "Aktualisiere"-Statement.

 

Gruß, Nils

 

Wenn ich die Aufgabenstellung richtig verstanden habe, gibt es in der Tabelle mehrere Einträge pro Kostenstelle, ansonsten würde es keinen Sinn machen den höchsten Wert pro Kostenstelle zu suchen.

 

Das heißt man müsste das "Wähle aus"-Statement durch ein "Einfüge"-Statement ersetzen.

 

EDIT siehe Post #4: Stichworte für die Suche nach dem höchsten Wort: GROUP BY sowie MAX()

 

Gruß MDD

Edited by MDD
Link to comment

Moin,

 

Das heißt man müsste das "Wähle aus"-Statement durch ein "Einfüge"-Statement ersetzen.

 


Gruß MDD

 

ja, guter Hinweis, das könnte sein. Dazu müsste man die Logik der Datenbank bzw. der Applikation kennen, um das zu entscheiden. Die Aussage "zurückgeschrieben" in der Anfrage lässt das offen.

 

 

Stichworte für die Suche nach dem höchsten Wort: GROUP BY sowie MAX()

 

Hm, GROUP BY sehe ich da jetzt nicht, weil ja nach einer konkreten Kostenstelle gefragt wird. Da reicht ein normaler Filter vermutlich aus.

 

Gruß, Nils

  • Like 1
Link to comment

Hallo,

 

vielen Dank schon mal.

 

Zum besseren Verständnis, der Aufbau der Tabelle ist folgendermaßen:

 

In Spalte 1 steht die Kostenstelle (Schlüsselfeld), in Spalte 2 eine fortlaufende Bestell-Nummer. Diese setzt sich zusammen aus der Kostenstellen, also Spalte 1 und weiteren 5 Ziffern. Unter der Kostenstelle gibt es jetzt beliebig viele Bestellungen. Wenn jetzt eine Bestellung geschrieben wird, soll mit dem Schlüssel Kostenstelle auf die Tabelle zugegriffen und die höchste Bestellnummer unter dieser Kostenstelle ermittelt und 1 dazu addiert werden. Das ergibt dann die Bestellnummer für die neue Bestellung.

 

Wie sieht jetzt hier die Syntex aus?

 

Angefangen von Select ..... bis zum Schluß. Die bisherigen Infos bringen mich kein Stück weiter.

 

Der Umgang mit SQL ist völlig neu für mich, hatte bisher keinerleih Berührung damit.

 

Nochmals vielen Dank für die Unterstützung!

Link to comment

Moin,

 

die Syntax haben wir dir schon fast vorgegeben, nur noch nicht mit den SQL-Statements. Da du anscheinend anfängst, SQL zu lernen, solltest du versuchen, dir das anhand des geschilderten Algirithmus' zu erarbeiten.

 

Da du mit SQL bislang noch nichts zu tun hattest, solltest du dich zunächst mit sehr einfachen Abfragen an die Sprache herantasten. Was du als Aufgabe beschrieben hast, ist schon ziemlich fortgeschritten. Mach lieber einen Schritt nach dem anderen.

 

Hier findest du z.B. eine allererste Übersicht - aber das Web ist voll von guten Einführungen zu SQL.

 

[Grundbefehle von SQL | faq-o-matic.net]
http://www.faq-o-matic.net/2002/03/17/grundbefehle-von-sql-2/

 

Gruß, Nils

Link to comment

Hallo Nils,

 

danke für den Tipp.

 

Allerdings ist diese Aufgabenstellung nicht zum Üben gedacht, sondern eine reale Anforderung die ich lösen muss. Ansonsten hätte ich vorher eine Schulung besucht und mich dann mit einfachen Anforderungen an die Sache herangetastet. Leider werde ich ins kalten Wasser geschmießen und muss zuerst die Anforderung lösen und erst danach kann ich eine Schulung besuchen.

 

Viele Grüße

Link to comment

Weiterer Ansatz ab MSSQL 2008 zumindest innerhalb des Management Studios

 

INSERT INTO Tabelle1 ( Spalte2, Kostenstelle )

OUTPUT inserted.*
SELECT Max([spalte2])+1 AS SpalteX, Tabelle1.Kostenstelle
FROM Tabelle1

WHERE Tabelle1.Kostenstelle='30300';

 

Hängt aber ganz ab womit du die Daten verarbeiten willst/musst.

 

Schönes WE

MDD

Edited by MDD
Link to comment

Moin,

 

ich sehe weiterhin keinen Grund für GROUP BY und würde es mit einem einfachen Filter machen.

 

Also, hier mein Vorschlag, diesmal dann eben als Code:

SELECT MAX(Kostenstelle), MAX(Bestellnr) + 1
FROM Tabelle
WHERE Kostenstelle = '30300'

Und wenn das passt:

INSERT INTO Tabelle (Kostenstelle, Bestellnr) 
SELECT MAX(Kostenstelle), MAX(Bestellnr) + 1
FROM Tabelle
WHERE Kostenstelle = '30300'

Aber ganz ehrlich, ich kann mir nicht vorstellen, wie jemand das Lösen einer doch recht komplexen Anfrage dieser Art jemandem übergibt, der SQL nicht kennt. Am Ende musst du damit selbst umgehen - aber ich werde das Gefühl nicht los, dass wir hier für jemanden gerade die Hausaufgaben erledigen, und das mache ich ungern.

 

Gruß, Nils

Edited by NilsK
  • Like 1
Link to comment
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...