zeilennummerierung in abfragen
Moderator: Moderatoren
zeilennummerierung in abfragen
als ziemlicher neuling habe ich eine wahrscheinlich für geübte nur unschwer zu beantwortende frage:
wie ergänzt man in openOffice(apache) eine abfrage um ein zusätzliches feld, das nur eine fortlaufende nummer, beginnend bei 1, anzeigt?
ich versuche eine datenbank für einen theaterverein zu erstellen, in dem es unter anderem tabellen für "teilnehmer", "teilnehmer eltern" "workshops" und "kurse" gibt, natürlich auch die nötigen zwischentabellen "teilnehmer_workshops", "teilnehmer_kurse"... u.s.f.
nun habe ich abfragen, die auch funktionieren(!) und mir zu den jeweiligen workshops resp. kursen, die angemeldeten teilnehmer (mit zusatzinfos wie telefon und email etc...) aufzeigen, diese abfragen basiern auf jeweils 4 tabellen: "Teilnehmer", Teilnehmer Eltern", "Teilnehmer_Workshops" und "Workshops".
in der sql unten fragte ich eben die teilnehmer für den workshop mit der ID 2 ab..., ich habe natürlich für jeden der workshops und der kurse eine derartige abfrage generiert!
SELECT "TEILNEHMER"."Name", "TEILNEHMER"."Vorname", "TEILNEHMER"."Geb.Datum", "TEILNEHMER ELTERN"."Telefon" AS "Telefon Eltern", "TEILNEHMER ELTERN"."Email" AS "Email Eltern", "TEILNEHMER"."Straße HausNr.|TürNr.", "TEILNEHMER"."Postleitzahl", "TEILNEHMER"."Land" FROM "TEILNEHMER_WORKSHOPS", "WORKSHOPS", "TEILNEHMER", "TEILNEHMER ELTERN" WHERE "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = "WORKSHOPS"."Workshop ID" AND "TEILNEHMER_WORKSHOPS"."Teilnehmer ID_f" = "TEILNEHMER"."Teilnehmer ID" AND "TEILNEHMER"."Teilnehmer Eltern ID_f" = "TEILNEHMER ELTERN"."Teilnehmer Eltern ID" AND "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = 2 ORDER BY "TEILNEHMER"."Name" ASC
meine recherchen bezüglich des gewünschten nummernfeldes, das eben auf einen blick die aktuelle anzahl der zum workshop/zum kurs angemeldeten teilnehmer zeigen soll, führen mich immer auf "das database handbuch", das ich habe und liebe, zurück. und auf "donkarls.access-seiten" mit seinem stets zitierten 3.11 paragrafen
http://www.donkarl.com?FAQ3.11, die ich aber scheints nicht richtig umlege!?
meine ganz konkrete frage, meine bitte: WO MUSS ICH WAS GENAU IN MEINE SQL ANWEISUNG EINFÜGEN, DAMIT ICH DER ABFRAGE VORANGESTELLT EINE FORTLAUFENDE NUMMER ERHALTE...
damit wäre mir unheimlich geholfen...
DANKE IM VORRAUS!
wie ergänzt man in openOffice(apache) eine abfrage um ein zusätzliches feld, das nur eine fortlaufende nummer, beginnend bei 1, anzeigt?
ich versuche eine datenbank für einen theaterverein zu erstellen, in dem es unter anderem tabellen für "teilnehmer", "teilnehmer eltern" "workshops" und "kurse" gibt, natürlich auch die nötigen zwischentabellen "teilnehmer_workshops", "teilnehmer_kurse"... u.s.f.
nun habe ich abfragen, die auch funktionieren(!) und mir zu den jeweiligen workshops resp. kursen, die angemeldeten teilnehmer (mit zusatzinfos wie telefon und email etc...) aufzeigen, diese abfragen basiern auf jeweils 4 tabellen: "Teilnehmer", Teilnehmer Eltern", "Teilnehmer_Workshops" und "Workshops".
in der sql unten fragte ich eben die teilnehmer für den workshop mit der ID 2 ab..., ich habe natürlich für jeden der workshops und der kurse eine derartige abfrage generiert!
SELECT "TEILNEHMER"."Name", "TEILNEHMER"."Vorname", "TEILNEHMER"."Geb.Datum", "TEILNEHMER ELTERN"."Telefon" AS "Telefon Eltern", "TEILNEHMER ELTERN"."Email" AS "Email Eltern", "TEILNEHMER"."Straße HausNr.|TürNr.", "TEILNEHMER"."Postleitzahl", "TEILNEHMER"."Land" FROM "TEILNEHMER_WORKSHOPS", "WORKSHOPS", "TEILNEHMER", "TEILNEHMER ELTERN" WHERE "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = "WORKSHOPS"."Workshop ID" AND "TEILNEHMER_WORKSHOPS"."Teilnehmer ID_f" = "TEILNEHMER"."Teilnehmer ID" AND "TEILNEHMER"."Teilnehmer Eltern ID_f" = "TEILNEHMER ELTERN"."Teilnehmer Eltern ID" AND "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = 2 ORDER BY "TEILNEHMER"."Name" ASC
meine recherchen bezüglich des gewünschten nummernfeldes, das eben auf einen blick die aktuelle anzahl der zum workshop/zum kurs angemeldeten teilnehmer zeigen soll, führen mich immer auf "das database handbuch", das ich habe und liebe, zurück. und auf "donkarls.access-seiten" mit seinem stets zitierten 3.11 paragrafen
http://www.donkarl.com?FAQ3.11, die ich aber scheints nicht richtig umlege!?
meine ganz konkrete frage, meine bitte: WO MUSS ICH WAS GENAU IN MEINE SQL ANWEISUNG EINFÜGEN, DAMIT ICH DER ABFRAGE VORANGESTELLT EINE FORTLAUFENDE NUMMER ERHALTE...
damit wäre mir unheimlich geholfen...
DANKE IM VORRAUS!
Re: zeilennummerierung in abfragen
Hallo sibc,
das Prinzip geht folgendermaßen:
Wenn Du nach einem Feld sortierst, so muss die Sortierung unverwechselbar sein. Eindeutige Werte liefert hier das Feld für den Primärschlüssel "ID".
Jetzt zu Deiner Abfrage:
Dies kann allerdings dazu führen, dass gleiche Nummern bei gleichen Namen vergeben werden. Hier musst Du ggf. über die Sortierung nachjustieren:
Gruß
Robert
das Prinzip geht folgendermaßen:
Code: Alles auswählen
SELECT "ID", ( SELECT COUNT( "ID" ) FROM "Tabelle" WHERE "ID" <= "a"."ID" ) AS "lfdNr." FROM "Tabelle" AS "a"
Jetzt zu Deiner Abfrage:
Code: Alles auswählen
SELECT
(SELECT COUNT("Name") FROM "TEILNEHMER" WHERE "Name" <= "a"."Name") AS "lfdNr.",
"a"."Name", "a"."Vorname", "a"."Geb.Datum", "TEILNEHMER ELTERN"."Telefon" AS "Telefon Eltern", "TEILNEHMER ELTERN"."Email" AS "Email Eltern", "a"."Straße HausNr.|TürNr.", "a"."Postleitzahl", "a"."Land"
FROM "TEILNEHMER_WORKSHOPS", "WORKSHOPS", "TEILNEHMER" AS "a", "TEILNEHMER ELTERN"
WHERE "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = "WORKSHOPS"."Workshop ID" AND "TEILNEHMER_WORKSHOPS"."Teilnehmer ID_f" = "a"."Teilnehmer ID" AND "a"."Teilnehmer Eltern ID_f" = "TEILNEHMER ELTERN"."Teilnehmer Eltern ID" AND "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = 2
ORDER BY "a"."Name" ASC
Code: Alles auswählen
SELECT
(SELECT COUNT("Name") FROM "TEILNEHMER" WHERE "Name"||"Teilnehmer ID" <= "a"."Name"||"a"."Teilnehmer ID") AS "lfdNr."
...
FROM ... "TEILNEHMER" AS "a" ...
WHERE ... "TEILNEHMER_WORKSHOPS"."Teilnehmer ID_f" = "a"."Teilnehmer ID" ...
ORDER BY "a"."Name"||"a"."Teilnehmer ID" ASC
Gruß
Robert
Re: zeilennummerierung in abfragen
danke! ich werde das alsbald testen! melde mich dann! gruß!
Re: zeilennummerierung in abfragen
lieber robert,
nun hab ich das probiert, leider nicht mit erwünschtem ergebnis... ich erhalte zwar eine zusätzliche leiste mit lfdNr., die nummerierung folgt aber mir nicht nachvollziehbaren regeln.
übernehme ich deinen ersten sql befehl, erhalten ich bei meinen 2 testdatensätzen in der abfrage die nummern 2 und 7 als lfdNr.
im zweiten fall 2 idente nummern, nämlich 2 mal die 10.
hast du dafür eine erklärung?
ich habe deinen befehl wie folgt eingefügt:
SELECT ( SELECT COUNT( "Name" ) FROM "TEILNEHMER" WHERE "Name" <= "a"."Name" ) AS "lfdNr.", "a"."Name", "a"."Vorname", "a"."Geb.Datum", "TEILNEHMER ELTERN"."Telefon" AS "Telefon Eltern", "TEILNEHMER ELTERN"."Email" AS "Email Eltern", "a"."Straße HausNr.|TürNr.", "a"."Postleitzahl", "a"."Land" FROM "TEILNEHMER_WORKSHOPS", "WORKSHOPS", "TEILNEHMER" AS "a", "TEILNEHMER ELTERN" WHERE "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = "WORKSHOPS"."Workshop ID" AND "TEILNEHMER_WORKSHOPS"."Teilnehmer ID_f" = "a"."Teilnehmer ID" AND "a"."Teilnehmer Eltern ID_f" = "TEILNEHMER ELTERN"."Teilnehmer Eltern ID" AND "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = 2 ORDER BY "a"."Name" ASC
herzlichst, sibc
nun hab ich das probiert, leider nicht mit erwünschtem ergebnis... ich erhalte zwar eine zusätzliche leiste mit lfdNr., die nummerierung folgt aber mir nicht nachvollziehbaren regeln.
übernehme ich deinen ersten sql befehl, erhalten ich bei meinen 2 testdatensätzen in der abfrage die nummern 2 und 7 als lfdNr.
im zweiten fall 2 idente nummern, nämlich 2 mal die 10.
hast du dafür eine erklärung?
ich habe deinen befehl wie folgt eingefügt:
SELECT ( SELECT COUNT( "Name" ) FROM "TEILNEHMER" WHERE "Name" <= "a"."Name" ) AS "lfdNr.", "a"."Name", "a"."Vorname", "a"."Geb.Datum", "TEILNEHMER ELTERN"."Telefon" AS "Telefon Eltern", "TEILNEHMER ELTERN"."Email" AS "Email Eltern", "a"."Straße HausNr.|TürNr.", "a"."Postleitzahl", "a"."Land" FROM "TEILNEHMER_WORKSHOPS", "WORKSHOPS", "TEILNEHMER" AS "a", "TEILNEHMER ELTERN" WHERE "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = "WORKSHOPS"."Workshop ID" AND "TEILNEHMER_WORKSHOPS"."Teilnehmer ID_f" = "a"."Teilnehmer ID" AND "a"."Teilnehmer Eltern ID_f" = "TEILNEHMER ELTERN"."Teilnehmer Eltern ID" AND "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = 2 ORDER BY "a"."Name" ASC
herzlichst, sibc
Re: zeilennummerierung in abfragen
Hallo sibc,
Rik machte mich gerade darauf aufmerksam, dass die Nummerierung so nicht korrekt funktioniert, da die korrelierende Abfrage nicht die gleichen Bedingungen mit bekommt, die die äußere Abfrage hat. Entsprechend komplizierter muss die Unterabfrage sein:
Damit ist die gesamte Bedingung aus der äußeren Abfrage auch in der korrelierenden Unterabfrage enthalten. Einfacher wäre so etwas bei so vielen verschiedenen Bezügen, wenn Du eine Beispieldatenbank anhängen würdest - so kann ich immer nur hoffen, etwas nicht übersehen zu haben.
Gruß
Robert
Rik machte mich gerade darauf aufmerksam, dass die Nummerierung so nicht korrekt funktioniert, da die korrelierende Abfrage nicht die gleichen Bedingungen mit bekommt, die die äußere Abfrage hat. Entsprechend komplizierter muss die Unterabfrage sein:
Code: Alles auswählen
SELECT
(SELECT
COUNT("TEILNEHMER"."Name")
FROM "TEILNEHMER_WORKSHOPS", "WORKSHOPS", "TEILNEHMER" , "TEILNEHMER ELTERN"
WHERE "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = "WORKSHOPS"."Workshop ID" AND "TEILNEHMER_WORKSHOPS"."Teilnehmer ID_f" = "TEILNEHMER"."Teilnehmer ID" AND "TEILNEHMER"."Teilnehmer Eltern ID_f" = "TEILNEHMER ELTERN"."Teilnehmer Eltern ID" AND "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = 2 AND "TEILNEHMER"."Name" <= "a"."Name") AS "lfdNr.",
"a"."Name", "a"."Vorname", "a"."Geb.Datum", "TEILNEHMER ELTERN"."Telefon" AS "Telefon Eltern", "TEILNEHMER ELTERN"."Email" AS "Email Eltern", "a"."Straße HausNr.|TürNr.", "a"."Postleitzahl", "a"."Land"
FROM "TEILNEHMER_WORKSHOPS", "WORKSHOPS", "TEILNEHMER" AS "a", "TEILNEHMER ELTERN"
WHERE "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = "WORKSHOPS"."Workshop ID" AND "TEILNEHMER_WORKSHOPS"."Teilnehmer ID_f" = "a"."Teilnehmer ID" AND "a"."Teilnehmer Eltern ID_f" = "TEILNEHMER ELTERN"."Teilnehmer Eltern ID" AND "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = 2
ORDER BY "a"."Name" ASC
Gruß
Robert
Zuletzt geändert von RobertG am So, 22.02.2015 11:25, insgesamt 1-mal geändert.
Re: zeilennummerierung in abfragen
lieber robert!
ich denke, ich weiß jetzt, woran das liegt. die lfdNr. 2 und 7 ist richtig wenn ich die der abfrage zugrunde liegende tabelle in ihrer gesamtheit betrachte... wenn ich da durchzähle, stehen meine datensätze der abfrage dort tatsächlich an 2. und 7. stelle...
das allerdings interessiert mich nicht.
es sollen nur die in der abfrage stehenden datensätze durchnummeriert werden, startend mit 1. das würde mir auf einen blick ersichtlich machen, wieviele teilnehmer der workshop zum jeweiligen abfragezeitpunkt hat.
danke für deine geduld. ich hoffe, ich habe mich klar ausgedrückt.
gruß
ich denke, ich weiß jetzt, woran das liegt. die lfdNr. 2 und 7 ist richtig wenn ich die der abfrage zugrunde liegende tabelle in ihrer gesamtheit betrachte... wenn ich da durchzähle, stehen meine datensätze der abfrage dort tatsächlich an 2. und 7. stelle...
das allerdings interessiert mich nicht.
es sollen nur die in der abfrage stehenden datensätze durchnummeriert werden, startend mit 1. das würde mir auf einen blick ersichtlich machen, wieviele teilnehmer der workshop zum jeweiligen abfragezeitpunkt hat.
danke für deine geduld. ich hoffe, ich habe mich klar ausgedrückt.
gruß
Re: zeilennummerierung in abfragen
jetzt haben sich unsere posts überschnitten... muss erst lesen. (und daneben eigentlich schon ans kochen denken...)
danke...

Re: zeilennummerierung in abfragen
sehr gerne hänge ich dir eine beispieldatenbank an, wahrscheinlich ist das alles sehr anfängerlike...
in den abfragen findest du nun dreimal kopiert meine ursprüngliche... als test, test1, test2 mit deinen sql befehlen...
in den abfragen findest du nun dreimal kopiert meine ursprüngliche... als test, test1, test2 mit deinen sql befehlen...
Re: zeilennummerierung in abfragen
auch der letztgesandte sql befehl liefert mir das gleiche ergebnis wie der erste... leider. wollte ich nur noch sagen.
lieben gruß sibc
lieben gruß sibc
Re: zeilennummerierung in abfragen
Hallo sibc,
habe jetzt von Rik die Datenbank erhalten. Er hatte dort mit einem etwas anderen Code das entsprechende Ergebnis erhalten.
ich habe den Code in meinem vorherigen Post angepasst. Die Unterabfrage hattte noch den Alias "a" an manchen Stellen. jetzt funktioniert die gesamte Abfrage wie gewünscht.
Gruß
Robert
habe jetzt von Rik die Datenbank erhalten. Er hatte dort mit einem etwas anderen Code das entsprechende Ergebnis erhalten.
ich habe den Code in meinem vorherigen Post angepasst. Die Unterabfrage hattte noch den Alias "a" an manchen Stellen. jetzt funktioniert die gesamte Abfrage wie gewünscht.
Gruß
Robert
Re: zeilennummerierung in abfragen
TAUSEND DANK! es funktioniert!!!
(hoffentlich gelingt es, hinfort bei allen abfragen, diesen befehl richtig einzusetzten...
)
ein kleines problem noch: bei gleichen (nach)namen (z.b. bei geschwisterkindern) vergibt die abfrage 2 gleiche nummern, ich muss also als 2. parameter den vornamen einfügen... ich versuchte deinen ursprünglichen 2. befehl mit der "ID" umzulegen ... es klappte nicht leider. dürfte ich nochmals um deine hilfe bitten?
mit grüßen aus wien!
sibc
(hoffentlich gelingt es, hinfort bei allen abfragen, diesen befehl richtig einzusetzten...

ein kleines problem noch: bei gleichen (nach)namen (z.b. bei geschwisterkindern) vergibt die abfrage 2 gleiche nummern, ich muss also als 2. parameter den vornamen einfügen... ich versuchte deinen ursprünglichen 2. befehl mit der "ID" umzulegen ... es klappte nicht leider. dürfte ich nochmals um deine hilfe bitten?
mit grüßen aus wien!
sibc
Re: zeilennummerierung in abfragen
Hallo sibc,
versuche einmal das Folgende:
Ist dann immer noch nicht eindeutig (wir hatten im Sportverein 2 Personen, die mit Vornamen und Nachnamen identisch waren - nicht verwandt; die wurde auch im Gespräch mit W...1 und W...2 bezeichnet), aber gegebenenfalls kann ja auch das Schlüsselfeld angehängt werden.
Gruß
Robert
versuche einmal das Folgende:
Code: Alles auswählen
SELECT
(SELECT
COUNT("TEILNEHMER"."Name")
FROM "TEILNEHMER_WORKSHOPS", "WORKSHOPS", "TEILNEHMER" , "TEILNEHMER ELTERN"
WHERE "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = "WORKSHOPS"."Workshop ID" AND "TEILNEHMER_WORKSHOPS"."Teilnehmer ID_f" = "TEILNEHMER"."Teilnehmer ID" AND "TEILNEHMER"."Teilnehmer Eltern ID_f" = "TEILNEHMER ELTERN"."Teilnehmer Eltern ID" AND "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = 2 AND "TEILNEHMER"."Name"||"TEILNEHMER"."Vorname" <= "a"."Name"||"a"."Vorname") AS "lfdNr.",
"a"."Name", "a"."Vorname", "a"."Geb.Datum", "TEILNEHMER ELTERN"."Telefon" AS "Telefon Eltern", "TEILNEHMER ELTERN"."Email" AS "Email Eltern", "a"."Straße HausNr.|TürNr.", "a"."Postleitzahl", "a"."Land"
FROM "TEILNEHMER_WORKSHOPS", "WORKSHOPS", "TEILNEHMER" AS "a", "TEILNEHMER ELTERN"
WHERE "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = "WORKSHOPS"."Workshop ID" AND "TEILNEHMER_WORKSHOPS"."Teilnehmer ID_f" = "a"."Teilnehmer ID" AND "a"."Teilnehmer Eltern ID_f" = "TEILNEHMER ELTERN"."Teilnehmer Eltern ID" AND "TEILNEHMER_WORKSHOPS"."Workshop ID_f" = 2
ORDER BY "a"."Name"||"a"."Vorname" ASC
Gruß
Robert
Re: zeilennummerierung in abfragen
FANTASTISCH!!!! RIESENDANK!
ganz glücklich bin ich dann, wenn ich das auch exakt verstehe warum das so funktioniert, aber das ist nun meine denknuss. schönen abend noch!
sibc
ganz glücklich bin ich dann, wenn ich das auch exakt verstehe warum das so funktioniert, aber das ist nun meine denknuss. schönen abend noch!
sibc
Re: zeilennummerierung in abfragen
Hallo sibc,
ich habe dieses Thema mitverfolgt, du siehst, laufende Nummern sind mit Base nicht gerade einfach umzusetzen.
Nur eine Idee:
Wolltest du eigentlich nur wissen, wieviele Teilnehmer ein Workshop hat?
Wenn ja, versuch mal diese etwas einfachere Abfrage:
Gruß R
ich habe dieses Thema mitverfolgt, du siehst, laufende Nummern sind mit Base nicht gerade einfach umzusetzen.
Nur eine Idee:
Wolltest du eigentlich nur wissen, wieviele Teilnehmer ein Workshop hat?
Wenn ja, versuch mal diese etwas einfachere Abfrage:
Code: Alles auswählen
SELECT
"Workshop ID_f",
"Bezeichnung",
COUNT( * ) AS "Teilnehmerzahl"
FROM
"WORKSHOPS"
LEFT JOIN
"TEILNEHMER_WORKSHOPS"
ON
"Workshop ID" = "Workshop ID_f"
GROUP BY
"Bezeichnung",
"Workshop ID_f"
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: zeilennummerierung in abfragen
liebe dank für diesen input! und ich werde auch diesen testen!!! nur nicht mehr heute... (ich bin überhaupt sehr angetan von der prompten hilfe, die einem hier zuteil wird!)
ich wollte die laufnummer allerdings haben, weil ich zugleich mit der teilnehmerliste (namen incl. relevanten daten) auch die anzahl der teilnehmer auf einen blick haben möchte... und wie ich sehe, es funktioniert!
gruß!
ich wollte die laufnummer allerdings haben, weil ich zugleich mit der teilnehmerliste (namen incl. relevanten daten) auch die anzahl der teilnehmer auf einen blick haben möchte... und wie ich sehe, es funktioniert!
gruß!