BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> 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

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Libreferdi
Beiträge: 26
Registriert: Mo 17. Okt 2016, 22:06

Abfrage benutzerdefiniert sortieren

Beitrag von Libreferdi » Mo 13. Nov 2017, 17:40

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
Dateianhänge
Unbenannt 1.doc
(29 KiB) 171-mal heruntergeladen

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Abfrage benutzerdefiniert sortieren

Beitrag von gogo » Mo 13. Nov 2017, 18:52

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

Code: Alles auswählen

update tsaenger set Sortierung = "1" where Stimme like "%sopran%"
... 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.
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

Libreferdi
Beiträge: 26
Registriert: Mo 17. Okt 2016, 22:06

Re: Abfrage benutzerdefiniert sortieren

Beitrag von Libreferdi » Mo 13. Nov 2017, 19:38

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

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Abfrage benutzerdefiniert sortieren

Beitrag von gogo » Mo 13. Nov 2017, 20:50

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 ;)

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

RobertG
Beiträge: 2732
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Abfrage benutzerdefiniert sortieren

Beitrag von RobertG » Mo 13. Nov 2017, 21:32

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:

Code: Alles auswählen

SELECT DISTINCT "Stimme" FROM "Saenger"
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
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

gogo
Beiträge: 1072
Registriert: Sa 5. Feb 2011, 19:07

Re: Abfrage benutzerdefiniert sortieren

Beitrag von gogo » Mo 13. Nov 2017, 22:47

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:
Screenshot_20171113_223924.png
Screenshot_20171113_223924.png (18.6 KiB) 3064 mal betrachtet
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"
Resultat:
Screenshot_20171113_224212.png
Screenshot_20171113_224212.png (6.67 KiB) 3064 mal betrachtet
... 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 :lol:
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

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 ❤️

Antworten