Frage an die Profis zwecks Einrichtung und Erstellung einer Datenbank

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

andy.peschel
Beiträge: 3
Registriert: So, 05.01.2020 18:23

Frage an die Profis zwecks Einrichtung und Erstellung einer Datenbank

Beitrag von andy.peschel »

Hallo zusammen, ich bin absoluter Neuling auf dem Gebiet Datenbanken.. Mein Problem: Ich habe eine etwas größere Pflanzensammlung die ich mit einer Datenbank erfassen möchte. Aktueller Aufbau: ID, Code, Gattung, Art usw. (ID: Primärschlüssel)
Ist es möglich anhand der Gattung einen Code zu generieren?
Hier mal ein Beispiel wie ich es mir vorstellen:
Pleinone xxx generiert Code: Pl001, Pleione yyy: Pl002 usw.. Wenn aber eine andere Gattung kommt das es dann wieder mit 001 losgeht: Xy001 bzw. Yz001

Vielen Dank im voraus...

Gesendet von meinem BV6000 mit Tapatalk


RobertG
*******
Beiträge: 1867
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Frage an die Profis zwecks Einrichtung und Erstellung einer Datenbank

Beitrag von RobertG »

Hallo Andy,

Du willst im Prinzip ein Feld durchzählen nach einem bestimmten 2. Begriff.
"ID" ist der Primärschlüssel
"Gattung" ist der Begriff
Abfrage:

Code: Alles auswählen

SELECT "a"."ID", "a"."Gattung", 
(SELECT COUNT("ID") FROM "Tabellenname" WHERE "Gattung" = "a"."Gattung" AND "ID" <= "a"."ID") AS "Counter" 
FROM "Tabellenname" AS "a"
Das gibt Dir in Abhängigkeit von der Gattung eine neue Nummerierung.
Jetzt willst Du die Nummerierung so gestalten, dass sie immer dreistellig ist. Hoffentlich hast Du also nicht über 999 Datensätze ...

Code: Alles auswählen

SELECT "a"."ID", "a"."Gattung", 
RIGHT('00'||(SELECT COUNT("ID") FROM "Tabellenname" WHERE "Gattung" = "a"."Gattung" AND "ID" <= "a"."ID"),3) AS "Counter" 
FROM "Tabellenname" AS "a"
Das schreibt jetzt grundsätzlich vor die Anzahl zwei Nullen und liest dann den so entstandenen Text von rechts aus - 3 Stellen.
JHetzt willst Du das auch noch mit der Gattung kombinieren:

Code: Alles auswählen

SELECT "a"."ID", "a"."Gattung", 
"Gattung"||RIGHT('00'||(SELECT COUNT("ID") FROM "Tabellenname" WHERE "Gattung" = "a"."Gattung" AND "ID" <= "a"."ID"),3) AS "GattungsCounter" 
FROM "Tabellenname" AS "a"
Gruß

Robert

andy.peschel
Beiträge: 3
Registriert: So, 05.01.2020 18:23

Re: Frage an die Profis zwecks Einrichtung und Erstellung einer Datenbank

Beitrag von andy.peschel »

andy.peschel hat geschrieben:Hallo zusammen, ich bin absoluter Neuling auf dem Gebiet Datenbanken.. Mein Problem: Ich habe eine etwas größere Pflanzensammlung die ich mit einer Datenbank erfassen möchte. Aktueller Aufbau: ID, Code, Gattung, Art usw. (ID: Primärschlüssel)
Ist es möglich anhand der Gattung einen Code zu generieren?
Hier mal ein Beispiel wie ich es mir vorstellen:
Pleinone xxx generiert Code: Pl001, Pleione yyy: Pl002 usw.. Wenn aber eine andere Gattung kommt das es dann wieder mit 001 losgeht: Xy001 bzw. Yz001

Vielen Dank im voraus...

Gesendet von meinem BV6000 mit Tapatalk
Ich brauch nochmal Hilfe. Da ich blutiger Anfänger bin hab natürlich auch keine Ahnung wo ich die codes eingeben muss...
Vielen Dank schon mal

Gesendet von meinem BV6000 mit Tapatalk


RobertG
*******
Beiträge: 1867
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Frage an die Profis zwecks Einrichtung und Erstellung einer Datenbank

Beitrag von RobertG »

Hallo Andy,

die Codes kannst Du direkt eingeben, wenn Du
Abfrage > Aufgaben > Abfrage in der SQL-Ansicht erstellen ...
wählst. Nur wird es vermutlich so sein, dass die Bezeichnungen (z.B. "Tabellenname") nicht mit Deiner Datenbank übereinstimmen.

Du kannst auch erst einmal die Felder über
Abfrage in der Entwurfsansicht erstellen ...
zusammen klicken und anschließend von dort aus den Designmodus ausstellen. Dann hast Du wieder die SQL-Eingabemöglichkeit. Da wirst Du dann so Code sehen wie
SELECT "ID", "Gattung" FROM "Tabelle"
Und daran musst Du dann weiter arbeiten.

Gegebenenfalls postest Du hier genau, wie denn die Tabelle heißt und wie die gewünschten Felder heißen, und dann bauen wir das zusammen so ein, dass es klappt.

Gruß

Robert

andy.peschel
Beiträge: 3
Registriert: So, 05.01.2020 18:23

Re: Frage an die Profis zwecks Einrichtung und Erstellung einer Datenbank

Beitrag von andy.peschel »

Cool es funktioniert!!! Habe über die gute Copy Paste Funktion den Code eingeben und siehe da.. Es klappt...[emoji2]
Hier ein Beispiel: Sarracenia flava erzeugt den Code SA001..
Nun kann ich gemütlich über den Winter alle Pflanzen einklöppeln..
Nächste Frage gibt's ne Möglichkeit den so erzeugten Code mit in die Tabelle einzufügen?? Zum Verständnis folgendes Vorhaben: alle Pflanzen einklöppeln, Abfrage ausführen dann hat jede ihren Code und den dann irgendwie zu dem entsprechenden Datensatz hinzufügen..
Danke schon Mal im voraus...
LG Andy

Gesendet von meinem GX290 mit Tapatalk


RobertG
*******
Beiträge: 1867
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Frage an die Profis zwecks Einrichtung und Erstellung einer Datenbank

Beitrag von RobertG »

Hallo andy,

ich würde es grundsätzlich vermeiden, das Ergebnis einer Abfrage wieder in einer Datenbank zu speichern. Da kann es dann leicht passieren, dass Inhalte aus Abfragen und neu erstellte Inhalte nicht mehr zusammen passen, wenn nur an einer Stelle eine Änderung erfolgt.

Du kannst doch die Abfrage als Grundlage für Dein Formular nehmen. Dann wird im Formular, sofern abgespeichert, auch die Unterabfrage bearbeitet und der Wert direkt angezeigt.

Du kannst natürlich mit einem ähnlichen Befehl ein Update über alle Felder der Tabelle machen. Du brauchst dafür so etwas wie das Feld "GattungsCounter" als Textfeld.

Code: Alles auswählen

UPDATE "Tabellenname" SET 
"GattungsCounter" = "Gattung"||RIGHT('00'||(SELECT COUNT("ID") FROM "Tabellenname" WHERE "Gattung" = "a"."Gattung" AND "ID" <= "a"."ID"),3)
Würde ich aber erst einmal an einer Kopie ausprobieren. Das habe ich hier nicht getestet und bei Komplettänderungen einer Tabelle bin ich da immer vorsichtig.

Wie geschrieben - würde ich nicht machen, da das ein Duplizieren von Daten ist und zu Fehlern führen kann, wenn etwas nur an einer Stelle geändert wird. Der Counter stimmt ja schon dann nicht mehr, wenn ein fehlerhafter Datensatz gelöscht wird.

Gruß

Robert

Antworten