Zum Inhalt springen

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


Patrick.Karre

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

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

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

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

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...