BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!
> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Abfrage benutzerdefiniert sortieren
-
- Beiträge: 26
- Registriert: Mo 17. Okt 2016, 22:06
Abfrage benutzerdefiniert sortieren
Hallo zusammen
ich habe folgendes Problem.
Da gibt es eine Tabelle in der stehen ganz viel Chormitglieder und ehemalig Sänger drin.
Nun gibt es auch eine Spalte in der steht auch drin welche Stimme der Sänger hat.
Mach ich nun eine Abfrage kann ich nicht die Abfrage so sortieren das der Sopran , dann Sopran 1 und zum Schluss der Bass da ist,
da man nur auf und absteigend sortieren kann.
Meine Frage könnte ich in der SQL-Abfrage da so etwas reinschreiben?
LG Ferdi
ich habe folgendes Problem.
Da gibt es eine Tabelle in der stehen ganz viel Chormitglieder und ehemalig Sänger drin.
Nun gibt es auch eine Spalte in der steht auch drin welche Stimme der Sänger hat.
Mach ich nun eine Abfrage kann ich nicht die Abfrage so sortieren das der Sopran , dann Sopran 1 und zum Schluss der Bass da ist,
da man nur auf und absteigend sortieren kann.
Meine Frage könnte ich in der SQL-Abfrage da so etwas reinschreiben?
LG Ferdi
- Dateianhänge
-
- Unbenannt 1.doc
- (29 KiB) 171-mal heruntergeladen
Re: Abfrage benutzerdefiniert sortieren
Mach' ein zusätzliches Feld "Sortierung", nur zum sortieren. Da bekommt dann der "Sopran 1" eine 1, "Sopran 2" eine 2, "Alt 1" die 3 ...
Umständlich, aber Kategorien lassen sich so am besten sortieren.
Das wäre das einfachste.
mit ... oder so ähnlich kannst Du alle Soprane auf "1" setzen . ohne dass Du Dir die Finger wund tippen musst.
Komplexer wäre eine 2. Tabelle in der Du die "Stimme" aus "tsaenger" dynamisch mit einem Index verbindest - ich nehme mal an, dass das den Aufwand nicht lohnt, vor allem wenn die Tabelle schon getippt ist.
Umständlich, aber Kategorien lassen sich so am besten sortieren.
Das wäre das einfachste.
mit
Code: Alles auswählen
update tsaenger set Sortierung = "1" where Stimme like "%sopran%"
Komplexer wäre eine 2. Tabelle in der Du die "Stimme" aus "tsaenger" dynamisch mit einem Index verbindest - ich nehme mal an, dass das den Aufwand nicht lohnt, vor allem wenn die Tabelle schon getippt ist.
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
-
- Beiträge: 26
- Registriert: Mo 17. Okt 2016, 22:06
Re: Abfrage benutzerdefiniert sortieren
Coole Idee aber etwas umständlich, hat funktioniert, nur was ich halt suche war die Möglichkeit bei der Sortierung nicgt auf und absteigend einzugeben sondern
'Sopran, Alt Tenor Bass,
aber muß ich wohl erst noch warten, bei Calk geht das nämlich.
Trotzdem danke
LG Ferdi
'Sopran, Alt Tenor Bass,
aber muß ich wohl erst noch warten, bei Calk geht das nämlich.
Trotzdem danke
LG Ferdi
Re: Abfrage benutzerdefiniert sortieren
da wartest Du lange, denn sql-basierte Datenbanken werden nicht für solche Fälle programmiert.
Wenn Du Kategorien hast, dann sind das eben "normalisierte" Daten und die sind per Definition "nicht metrisch" d.h. unsortiert. Korrekterweise sortiert man da indem man eine 2. Tabelle macht, welche die Kategorien beinhaltet. Deren Primärschlüssel ist der Fremdschlüssel der Daten-Tabelle, das Sortier-Feld befindet sich in der Kategorien-Tabelle. In der Abfrage verwendet man dann einen Join und passt. - Ich vermute mal, dass Calc das intern genau so macht - immerhin haben das Informatiker programmiert
Wenn Du Kategorien hast, dann sind das eben "normalisierte" Daten und die sind per Definition "nicht metrisch" d.h. unsortiert. Korrekterweise sortiert man da indem man eine 2. Tabelle macht, welche die Kategorien beinhaltet. Deren Primärschlüssel ist der Fremdschlüssel der Daten-Tabelle, das Sortier-Feld befindet sich in der Kategorien-Tabelle. In der Abfrage verwendet man dann einen Join und passt. - Ich vermute mal, dass Calc das intern genau so macht - immerhin haben das Informatiker programmiert
Code: Alles auswählen
Select saenger.* from saenger join stimmen on saenger.StimmID = stimmen.StimmID order by stimmen.Sortierung
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
Re: Abfrage benutzerdefiniert sortieren
Eine direkte Abfrage geht hier ja nicht. Irgendwo muss die Sortierung vordefiniert sein. Für den einfachsten Fall würde ich eine neue Tabelle "Stimmen" erstellen, in der ein Feld "Stimme" (als Primärschlüssel, Textfeld) und ein Feld "Sort" steht.
Die Belegung für das Feld "Stimme" würde ich mir aus der Sängertabelle rausziehen:
Diese Abfrage dann nehmen und den Inhalt kopieren und in die neue Tabelle einfügen. Dann noch die gewünschte Sortierung ausfüllen und so weiter verfahren, wie es Gogo bereits in seinem Beitrag geschrieben hat.
So eine Sortierung muss ja irgendwo hinterlegt werden. In Calc kann das irgendwo in der Datei sein, in einer Datenbank dann eben irgendwo in einer Tabelle, das die Datenbank auf andere Elemente der *.odb-Datei keinen Zugriff für seinen SQL-Code hat.
Gruß
Robert
Die Belegung für das Feld "Stimme" würde ich mir aus der Sängertabelle rausziehen:
Code: Alles auswählen
SELECT DISTINCT "Stimme" FROM "Saenger"
So eine Sortierung muss ja irgendwo hinterlegt werden. In Calc kann das irgendwo in der Datei sein, in einer Datenbank dann eben irgendwo in einer Tabelle, das die Datenbank auf andere Elemente der *.odb-Datei keinen Zugriff für seinen SQL-Code hat.
Gruß
Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Abfrage benutzerdefiniert sortieren
ok - es geht doch mit einer direkten Abfrage, aber kompliziert:
Das SQL-Kommando lautet "UNION ALL" und zusätzlich braucht man generierte Felder:
Sieh' Dir die Beispieldatenbank an das wäre die Tabelle:
und das die Abfrage die's tut:
Resultat:
... für 4 Stimmen ist das noch durchführbar - für ein Orchester mit vielen Registern wird's schon schwieriger - aber Musiker sind ja komplexe Notierungen gewohnt
Das SQL-Kommando lautet "UNION ALL" und zusätzlich braucht man generierte Felder:
Sieh' Dir die Beispieldatenbank an das wäre die Tabelle:
und das die Abfrage die's tut:
Code: Alles auswählen
select "SName", '1' as "ORD" from "saenger" where "Stimme" = 'Sopran'
UNION ALL
select "SName", '2' as "ORD" from "saenger" where "Stimme" = 'Alt'
UNION ALL
select "SName", '3' as "ORD" from "saenger" where "Stimme" = 'Tenor'
UNION ALL
select "SName", '4' as "ORD" from "saenger" where "Stimme" = 'Bass'
order by "ORD","SName"
- Dateianhänge
-
- Chorliste.zip
- (3.42 KiB) 167-mal heruntergeladen
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu
An alle, die das LibreOffice-Forum nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.
❤️ Vielen lieben Dank für Ihre Unterstützung ❤️