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!

Empfohlene Beiträge

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 zu diesem Kommentar

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

bearbeitet von MDD
Link zu diesem Kommentar

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

Link zu diesem Kommentar

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 zu diesem Kommentar

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 zu diesem Kommentar

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 zu diesem Kommentar

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

bearbeitet von MDD
Link zu diesem Kommentar

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

bearbeitet von NilsK
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...