Hallo zusammen,
könnte nochmal eure Hilfe gebrauchen.
Würde gerne die Datensätze in einer Abfrage durchnummerieren.
Allerdings nicht einfach nur 1,2,3 usw. sondern folgendermaßen (siehe Spalte C)
(http://imgur.com/5p5Z4Op)
http://imgur.com/a/9yA8R (http://imgur.com/a/9yA8R)
Die Nummerierung soll sich quasi auf das Feld "Auftragsnummer" beziehen.
Bei gleicher Auftragsnummer, die selbe Nummerierung.
Würde mich freuen, wenn mir jemand helfen kann.
Vielen Dank schonmal im Voraus
Viele Grüße
Wenn man den Daten folgt:
SELECT
Auftragsnummer,
Auftragsnummer - 2310 AS Nummerierung
FROM
EineTabelle
Zitat von: ebs17 am Januar 24, 2017, 15:06:23
Wenn man den Daten folgt:
SELECT
Auftragsnummer,
Auftragsnummer - 2310 AS Nummerierung
FROM
EineTabelle
Hallo ebs17,
Vielen Dank erstmal für deine Antwort.
Leider kann ich mit SQL überhaupt nichts anfangen,
gibt es dafür auch eine Formel, die ich ganz normal (für mich einfachere Variante) in der Entwurfsansicht in eine neue Spalte einfügen kann?
VG
Hallo la.bestia.negra,
die Antwort von Eberhard ist die SQL-Ansicht einer Abfrage. EineTabelle musst du durch deinen Tabellennamen ersetzen.
Gruß
Josef
Hallo,
Um Eberhards SQL-String im Abfrageeditor zu erstellen wählst du deine Tabelle aus
und ziehst das Feld "Auftragsnummer" in die 1. Spalte. In die 2.Spalte schreibst du
Nummerierung: Auftragsnummer - 2310
gruss ekkehard
Zitatgibt es dafür auch eine Formel
Auftragsnummer - 2310
Das könnte man eventuell lesen oder sogar selber entwickeln.
ZitatLeider kann ich mit SQL überhaupt nichts anfangen
Wenn Du Dich ernsthaft mit Datenbanken beschäftigen und nicht nur an den Knöpfen von Access spielen willst, solltest Du diesen Zustand ändern - das ist zumindest meine Meinung. In China kommt man mit chinesisch immer noch am weitesten.
Zitat von: ebs17 am Januar 24, 2017, 16:15:59
Zitatgibt es dafür auch eine Formel
Auftragsnummer - 2310
Das könnte man eventuell lesen oder sogar selber entwickeln.
ZitatLeider kann ich mit SQL überhaupt nichts anfangen
Wenn Du Dich ernsthaft mit Datenbanken beschäftigen und nicht nur an den Knöpfen von Access spielen willst, solltest Du diesen Zustand ändern - das ist zumindest meine Meinung. In China kommt man mit chinesisch immer noch am weitesten.
Ich arbeite seit 5 Jahren mit Access, habe die SQL Ansicht bisher noch NIE gebraucht :o
Die Lösung war das übrigens nicht...
Ich möchte in einer Abfrage, die auf einer anderen Abfrage aufbaut
eine weitere Spalte einfügen, die mir die Datensätze wie oben beschrieben durch nummeriert.
Hallo,
ZitatDie Lösung war das übrigens nicht...
wieso nicht ?
Statt "EineTabelle" nimmst Du die 1.Abfrage.
Hi. Öffne Deine Abfrage im Abfragedesigner von Access, also da wo Du die Tabellen und Verknüpfungen siehst. Jetzt klickst Du auf eine freie Spalten in der Abfrage in das obere Feld (Feld:) mit der rechten Maustaste und wählst den Menüpunkt "Aufbauen...". Ein Fenster öffnest sich. Hier gibt Du jetzt ein
Nummerierung: Rechts([Auftragsnummer];1)
Und mit Enter bestätigen.
Deine Abfrage sollte nun die gewünschte Spalte erhalten. Du kannst das ganze auch eingeben, ohne über die rechte Maustaste das Fenster zu öffnen, nur erhältst Du in diesem Fenster noch weitere Hinweise zur Nutzung der Funktionen.
LG
Hallo,
@datekk
Und wie geht es dann ab 9 weiter ?
Hi MzKIMu... Laut erstem Post des TE war das nicht gefragt. Die Antwort müsste er uns geben ob es nach neun oder null weiter gehen soll und wenn ja wie... Nach seinem Beispiel war das nicht gefragt.
Sollte es über die neun hinaus gehen müsste man die Formel einfach nur ändern in:
Nummerierung: [Auftragsnummer] - 2310
Wichtig war ihm ja, dass es ohne SQL geht. Das ist der Weg.
Zitat von: datekk am Januar 24, 2017, 18:20:44
Hi MzKIMu... Laut erstem Post des TE war das nicht gefragt. Die Antwort müsste er uns geben ob es nach neun oder null weiter gehen soll und wenn ja wie... Nach seinem Beispiel war das nicht gefragt.
Sollte es über die neun hinaus gehen müsste man die Formel einfach nur ändern in:
Nummerierung: [Auftragsnummer] - 2310
Wichtig war ihm ja, dass es ohne SQL geht. Das ist der Weg.
Hallo datekk,
So hatte ich das gemeint mit der Formel,
Danke dir! :)
Bloß das mit -2310 verstehe ich noch nicht ganz?
Insgesamt gibt es 80 verschiedene Auftragsnummern, also geht es nach 9 weiter.
Das aus Excel im ersten Post von mir war ja nur ein Beispiel.
VG
Hallo,
ZitatBloß das mit -2310 verstehe ich noch nicht ganz?
was gibt es daran nicht zu verstehen ?
2311 - 2310 = 1
2312 - 2310 = 2
2313 - 2310 = 3
2314 - 2310 = 4
usw.
Übrigens, das ist ein berechnetes Feld in einer Abfrage und somit auch SQL, man sieht es bloß nicht direkt.
Zitat von: MzKlMu am Januar 24, 2017, 20:05:02
Hallo,
ZitatBloß das mit -2310 verstehe ich noch nicht ganz?
was gibt es daran nicht zu verstehen ?
2311 - 2310 = 1
2312 - 2310 = 2
2313 - 2310 = 3
2314 - 2310 = 4
usw.
Übrigens, das ist ein berechnetes Feld in einer Abfrage und somit auch SQL, man sieht es bloß nicht direkt.
Okay jetzt verstehe ich wie das mit - (Minus) 2310 gemeint ist.
Damit wird die "Nummerierung" also berechnet..
Problem, dass im ersten Post war nur ein Beispiel. (schlechtes Beispiel :-\)
In Wirklichkeit sind die Auftragsnummer komplett unterschiedlich und nicht aufsteigend.
Also klappt das mit der Berechnung nicht ganz oder?
PS:
Datensatz 1: Auftrag: 2311 Nummerierung: 1
Datensatz 2: Auftrag: 2812 Nummerierung: 2
Datensatz 3: Auftrag: 3012 Nummerierung: 3
Datensatz 4: Auftrag: 3012 Nummerierung: 3
Datensatz 5: Auftrag: 3012 Nummerierung: 3
Datensatz 6: Auftrag: 5023 Nummerierung: 4
Datensatz 7: Auftrag: 8021 Nummerierung: 5
So ist das Beispiel wohl besser..
Vielleicht teilst Du uns auch mit, welchen Mehrwert die Daten durch die Nummerierung erfahren und wo sie eingesetzt werden soll.
BTW: dass die gezeigten Daten nicht die Anforderungen der referentiellen Integrität erfüllen, ist Dir bewußt?
Dass Eberhards Lösungsvorschlag
nur auf den Beispieldaten basiert,
hatte er aber gleich zu Beginn bemerkt:
ZitatWenn man den Daten folgt:
Zitat von: Lachtaube am Januar 24, 2017, 20:37:21
Vielleicht teilst Du uns auch mit, welchen Mehrwert die Daten durch die Nummerierung erfahren und wo sie eingesetzt werden soll.
Ich möchte einfach einen weiteren Wert,
in dem Fall die Nummerierung, auf die ich dann weiter gruppieren kann.
Gruppe 1: alle Aufträge/Datensätze mit Nummerierung 1 bis 5
Gruppe 2: alle Aufträge/Datensätze mit Nummerierung 6 bis 10
Gruppe 3: alle Aufträge/Datensätze mit Nummerierung 11 bis 15
usw.
Die Datensätze enthalten natürlich noch mehr Informationen wie nur die Auftragsnummer.
Willst Du damit ausdrücken, dass es keinen Mehrwert gibt und auch noch nicht so recht weißt, was Du überhaupt mit dem Resultat anstellen willst?
PS: ich frage so unverschämt, weil die Zielabfrage vermutlich rechenintensiv (bei großen Datenbestand damit auch langsam ist und bei Weiterverwendung immer langsamer wird), und weil es z. Bsp. in Berichten viel einfachere Methoden der Nummerierung für Gruppen und/oder Datensätzen gibt.
PPS: würde man die Daten richtig normalisieren, wäre der Rechenaufwand schon geringer.
Zitat von: Lachtaube am Januar 24, 2017, 21:05:42
Willst Du damit ausdrücken, dass es keinen Mehrwert gibt und auch noch nicht so recht weißt, was Du überhaupt mit dem Resultat anstellen willst?
PS: ich frage so unverschämt, weil die Zielabfrage vermutlich rechenintensiv (bei großen Datenbestand damit auch langsam ist und bei Weiterverwendung immer langsamer wird), und weil es z. Bsp. in Berichten viel einfachere Methoden der Nummerierung für Gruppen und/oder Datensätzen gibt.
PPS: würde man die Daten richtig normalisieren, wäre der Rechenaufwand schon geringer.
Die Nummerierung ist doch der Mehrwert.
Ohne diese, kann ich die Aufträge nicht so gruppieren wie ich es vorhabe.
Die einzelnen Gruppen möchte ich dann weiter analysieren.
Hallo la.bestia.negra,
du willst ein bestimmtes Ziel erreichen.
Dieses Ziel kennen wir nicht.
Deine geplanten Schritte für dieses Ziel hast du vorgegeben:
1. Schritt: Durchnummerierung
2. Schritt: Gruppierung in 5er-Blöcke
3. Schritt: ?
Ziel: ?
Vielleicht kann dir das Forum eher eine Lösung anbieten, wenn du uns das Ziel (das was du erreichen willst), und nicht die Schritte zu diesem Ziel beschreibst?
Dann könnten (vermutlich / vielleicht?) einige der Zwischenschritte wegfallen.
Das hat vermutlich Lachtaube mit Mehrwert gemeint.
Was hältst du davon? ;)
Gruß
Josef
Damit Du ein Gefühl meiner Besorgnis erfährst, kannst Du Dir ja mal das Beispiel im Anhang mit 10000 Datensätzen ansehen und beim Ausführen der Abfrage etwas geduldig sein.
Zitat von: Lachtaube am Januar 25, 2017, 08:00:08
Damit Du ein Gefühl meiner Besorgnis erfährst, kannst Du Dir ja mal das Beispiel im Anhang mit 10000 Datensätzen ansehen und beim Ausführen der Abfrage etwas geduldig sein.
Hallo Lachtaube,
erstmal vielen Dank für deine Mühe.
Die Abfrage funktioniert ohne Probleme und langes Warten, dass mit der Durchnummerierung ist auch so wie ich es haben möchte.
Ich verstehe bloß die Abfrage nicht ganz.
Die Abfrage greift auf Tabelle "d1" und "q" zu, diese gibt es bei mir in der Datei garnicht ?
Ich sehe lediglich die Tabelle "Data"..
Die Abfrage ist nur in der SQL-Ansicht zu verstehen und setzt voraus, dass Grundkenntnisse wie die Vergabe von Alias-Namen für Tabellen bzw. Abfragen geläufig sind.
Das sind Abkürzungen. Schau in den SQL Teil... Da kann man die Tabellennamen abkürzen. Also z.B. Select q.Spalte1 From TabelleDaten As q
Die TabelleDaten wird dann als 'q' geführt...
Kann mir das jemand übersetzen:
SELECT d1.Datum, d1.Auftragsnummer, q.Nummerierung, d1.Daten
FROM Data AS d1 INNER JOIN (SELECT d0.Auftragsnummer, (SELECT Count(*) FROM (SELECT DISTINCT Auftragsnummer FROM Data) WHERE Auftragsnummer <= d0.Auftragsnummer) AS Nummerierung
FROM (SELECT DISTINCT Auftragsnummer FROM Data) AS d0) AS q ON d1.Auftragsnummer = q.Auftragsnummer;
Würde mich freuen :)
PS:
Ich verstehe "SELECT q.Nummerierung FROM Data" nicht, da es in der Tabelle Data kein Feld gibt, dass Nummerierung heißt
Zitat von: la.bestia.negra am Januar 26, 2017, 15:25:45
Ich verstehe "SELECT q.Nummerierung FROM Data" nicht, da es in der Tabelle Data kein Feld gibt, dass Nummerierung heißt
Nein, in der Tabelle nicht, aber innerhalb der Abfrage wird für die künstlich erzeugte Spalte mit der Datensatzanzahl (
(SELECT Count(*) ...) der Name
Nummerierung vergeben (
... AS Nummerierung).
Auf meiner Seite ist ein Text der den Sinn und die Nutzung von Aliasen in SQL (http://codekabinett.com/rdumps.php?Lang=1&targetDoc=sql-as-alias) erklärt.
Zitat
Auf meiner Seite ist ein Text der den Sinn und die Nutzung von Aliasen in SQL (http://codekabinett.com/rdumps.php?Lang=1&targetDoc=sql-as-alias) erklärt.
Ok verstehe. Danke für den Link :)
PS: Klasse Homepage mit hilfreichen Tipps!
Tipp: Komplexere SQL-Anweisungen liest man nicht von vorne nach hinten, sondern von innen heraus, wobei jeweils der FROM-Teil das Tor zu innen ist.
Siehe auch Grundlagen - SQL ist leicht (6) - Komplexe Abfragen schreiben und lesen (http://www.ms-office-forum.net/forum/showthread.php?t=317066)