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.

MS-SQL: UPDATE-Statement begrenzen auf eine bestimmte Anzahl von Datensätzen

Empfohlene Antworten

Veröffentlicht

Hallo Forum,

ich habe folgende Aufgabenstellung:

Ich habe zwei Tabellen. In einer stehen Adressen in einer anderen Mitarbeiter drinnen. Bei den Mitarbeitern gibt es eine Anzahl die für jeden Mitarbeiter unterschiedlich ist. Diese Anzahl gibt an, für wie viele Adressen der jeweilige Mitarbeiter zuständig sein soll. Die Adressen die einem Mitarbeiter zugeteilt werden, bekommen ein bestimmtes Flag gesetzt, die restlichen Adressen bekommen ein anderes Flag.

Die Anzahl bei den Mitarbeitern wird mit einer Zahl multipliziert, die ausgerechnete Zahl soll die Anzahl der Adressen sein, die dem Mitarbeiter zugeteilt werden. Jetzt stellt sich die Frage, wie baue ich so ein SQL-Statement am besten auf. Muss ich hier mit einer Schleife arbeiten.

Für Lösungsvorschläge wäre ich dankbar.

Beste Grüße aus Giessen

Patrick

Ich hoffe ich versteh das richtig.

Du willst also eine Spalte mit einem Wert multiplizieren?

Wie waere es mit

UPDATE tabelle

SET spalte1 = spalte1*14

(WHERE sowieso)

Oder hab ich das falsch verstanden?

  • Autor

Das macht ein Update über alle Datensätze, ich möchte aber nur eine bestimmte Anzahl haben.

Ich habe 2000 Adressen und 10 Mitarbeiter. Jeder Mitarbeiter hat eine bestimmte Anzahl die mal einen Faktor genommen wird (10 * Faktor 5 = 50 Adressen). Nur für diese gefundene Anzahl von Adressen soll ein Flag gesetzt werden, die restlichen sollen ignoriert werden. Und das für jeden Mitarbeiter.

Ginge es denn mit einem

HAVING COUNT(*) < 50

Oder sowas?

Ansonsten musst du es wohl mit einem Script machen, und einer Loop.

Irgendwie versetehe ich nicht, was Du brauchst. Aus meiner Vermutung hilft Dir vielleicht das weiter:


UPDATE mt Set Flag = 1

FROM Mitarbeiter mt

INNER JOIN

(SELECT MitarbeiterID FROM Adressen 

GROUP BY MitarbeiterID 

Having Count(MitarbeiterID) * Faktor > 50) a ON mt.MitarbeiterID = a.MitarbeiterID

Für Lösungsvorschläge wäre ich dankbar.

Das wichtigste hast du in meinen Augen vergessen.

Du sagst nur, dass am Ende eine bestimme Anzahl Adressen je einem Mitarbeiter zugeordnet werden sollen.

Die alles entscheidende Frage ist hier aber, nach welcher Logik die Adressen verteilt werden sollen.

Gibt es irgendwelche Auswahlkriterien?

Gibt es ein Sortierkriterium und die Adressen werden dann einfach der Reihe nach vergeben?

usw.

Goos

  • Autor

Ich stelle meine Frage anderst:

Ich habe eine Tabelle mit Adresse und in einer anderen Tabelle die Mitarbeiter zu den Adressen. Jetzt möchte ich, dass für jeden Mitarbeiter eine bestimmte Anzahl (z.b. 10) Adressen zurückgegeben werden.

Wie muss das SQL-Statement aussehen. In welcher Folge die Adressen zurück gegeben werden ist vollkommen egal.

Beste Grüße aus Giessen

Patrick

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.