🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱
🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Top 10 liste machen
Top 10 liste machen
Hallo,
Ich mochte gerne eine Top 10 liste filter machen, Problem ist dass ich nicht weiß wie ich dass machen soll.
Was ich sehen will ist von einen bestimmtes Jahr, zum Beispiel 2006.
Platz Artiest Song Jaar
1 Oueen / Bohemian Rhapsody / 1975
2 Boudewijn de Groot / Avond / 1997
3 Eagles / Hotel California / 1977
Wie muss ich dass machen.
Der Link nach Datei https://copy.com/8IVYteUnJ0tWNpCY
Ich mochte gerne eine Top 10 liste filter machen, Problem ist dass ich nicht weiß wie ich dass machen soll.
Was ich sehen will ist von einen bestimmtes Jahr, zum Beispiel 2006.
Platz Artiest Song Jaar
1 Oueen / Bohemian Rhapsody / 1975
2 Boudewijn de Groot / Avond / 1997
3 Eagles / Hotel California / 1977
Wie muss ich dass machen.
Der Link nach Datei https://copy.com/8IVYteUnJ0tWNpCY
Schöne grüße aus Emsland
Andreas
Andreas
Re: Top 10 liste machen
Für 2006
Falls Du was flexibleres brauchst, musst Du umcodiern:
Z.B. mit einer Tabelle:
ID, artiest, titel, jahr, rank_jahr, rank
2172, Billy Joel, James, 2005, 1666
2173, Billy Joel, James, 2006, 1998
2174, Billy Joel, James, 2007, 1887
2175, Billy Joel, James, 2008, 1811
...
Code: Alles auswählen
SELECT "artiest", "titel", "2006" FROM "Lijst" ORDER BY "2006" DESC limit 10
Z.B. mit einer Tabelle:
ID, artiest, titel, jahr, rank_jahr, rank
2172, Billy Joel, James, 2005, 1666
2173, Billy Joel, James, 2006, 1998
2174, Billy Joel, James, 2007, 1887
2175, Billy Joel, James, 2008, 1811
...
Code: Alles auswählen
SELECT "artiest", "titel", "rank" FROM "Lijst" WHERE "rank_jahr"= :welches_Jahr ORDER BY "rank" DESC limit 10
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: Top 10 liste machen
Habe die Tabelle geteilt und so alle Titel untereinander geschrieben, dann geht es ganz leicht.
Gruß R
Gruß R
- Dateianhänge
-
- Top2000nieuw.zip
- (802.48 KiB) 146-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Top 10 liste machen
@ gogo
Vielen dank für diese Lösung dem Befehl "DESC limit" kante ich nicht.
Ich brachte etwas zeit um deine Lösung zu verstehen, aber es hat geklappt .
Danke
@ F3K Total
Das ist ja eine komplett Lösung muss jetzt mal sehen was Du alles gemacht hast es ist viel geändert jetzt muss ich noch verstehen wie dass alles funktioniert.
Aber bin sehr froh mit diese Lösung.
DANKE
Vielen dank für diese Lösung dem Befehl "DESC limit" kante ich nicht.
Ich brachte etwas zeit um deine Lösung zu verstehen, aber es hat geklappt .
Danke
@ F3K Total
Das ist ja eine komplett Lösung muss jetzt mal sehen was Du alles gemacht hast es ist viel geändert jetzt muss ich noch verstehen wie dass alles funktioniert.
Aber bin sehr froh mit diese Lösung.
DANKE
Schöne grüße aus Emsland
Andreas
Andreas
Re: Top 10 liste machen
Hi,Atwist hat geschrieben:... muss jetzt mal sehen was Du alles gemacht hast es ist viel geändert jetzt muss ich noch verstehen wie dass alles funktioniert.
ich versuche mal das wichtigste zu erklären.
Zunächst habe ich noch eine Änderung durchgeführt, VALUE heißt nun RANK.
Damit du nachvollziehen kannst, was ich gemacht habe, anbei deine Originaldatei, ohne Änderungen an den Tabellen.
Das schwierigste ist, aus deiner Tabellenmatrix, wo die Jahre nebeneinander angeordnet sind, eine Tabelle zu machen, in der alle Werte untereinander angeordnet sind. So ist es möglich mit einem Suchbegriff alle Werte zu filtern.
Führe EINMAL über Extras/SQL... die folgenden Befehle aus (Copy/Paste -> Ausführen):
Code: Alles auswählen
CREATE TABLE "RANK_JAAR"("JAAR" INTEGER NOT NULL,"FK_ID" INTEGER NOT NULL,"RANK" INTEGER,PRIMARY KEY("JAAR","FK_ID"));
ALTER TABLE "RANK_JAAR" ADD CONSTRAINT FKIDTITEL FOREIGN KEY("FK_ID") REFERENCES "Lijst"("ID") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "zoekfilter" ADD COLUMN "F-Top-jaar" INTEGER
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 1999, ID, "1999" FROM "Lijst" WHERE "1999" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2000, ID, "2000" FROM "Lijst" WHERE "2000" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2001, ID, "2001" FROM "Lijst" WHERE "2001" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2002, ID, "2002" FROM "Lijst" WHERE "2002" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2003, ID, "2003" FROM "Lijst" WHERE "2003" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2004, ID, "2004" FROM "Lijst" WHERE "2004" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2005, ID, "2005" FROM "Lijst" WHERE "2005" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2006, ID, "2006" FROM "Lijst" WHERE "2006" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2007, ID, "2007" FROM "Lijst" WHERE "2007" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2008, ID, "2008" FROM "Lijst" WHERE "2008" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2009, ID, "2009" FROM "Lijst" WHERE "2009" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2010, ID, "2010" FROM "Lijst" WHERE "2010" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2011, ID, "2011" FROM "Lijst" WHERE "2011" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2012, ID, "2012" FROM "Lijst" WHERE "2012" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2013, ID, "2013" FROM "Lijst" WHERE "2013" > 0;
INSERT INTO RANK_JAAR (JAAR, FK_ID, RANK) SELECT 2014, ID, "2014" FROM "Lijst" WHERE "2014" > 0;
ALTER TABLE "Lijst" DROP "1999";
ALTER TABLE "Lijst" DROP "2000";
ALTER TABLE "Lijst" DROP "2001";
ALTER TABLE "Lijst" DROP "2002";
ALTER TABLE "Lijst" DROP "2003";
ALTER TABLE "Lijst" DROP "2004";
ALTER TABLE "Lijst" DROP "2005";
ALTER TABLE "Lijst" DROP "2006";
ALTER TABLE "Lijst" DROP "2007";
ALTER TABLE "Lijst" DROP "2008";
ALTER TABLE "Lijst" DROP "2009";
ALTER TABLE "Lijst" DROP "2010";
ALTER TABLE "Lijst" DROP "2011";
ALTER TABLE "Lijst" DROP "2012";
ALTER TABLE "Lijst" DROP "2013";
ALTER TABLE "Lijst" DROP "2014";
ALTER TABLE "Lijst" DROP "2015";
ALTER TABLE "Lijst" DROP "2016";
CHECKPOINT DEFRAG
Was passiert:
- ...erzeugt die neue Tabelle RANK_JAAR
Code: Alles auswählen
CREATE TABLE "RANK_JAAR" ...
- ...erzeugt die Beziehung, die du unter Extras/Beziehungen sehen kannst
Code: Alles auswählen
ALTER TABLE "RANK_JAAR" ...
- ...erzeugt eine zusätzlich Spalte in der Tabelle "zoekfilter"
Code: Alles auswählen
ALTER TABLE "zoekfilter" ADD COLUMN
- ...fügt nun die Werte der Spalten 1999-2016 deiner Tabelle "Lijst" untereinander in die neue Tabelle ein
Code: Alles auswählen
INSERT INTO RANK_JAAR ...
- ...löscht anschließend die Spalten 1999-2016 aus deiner Tabelle "Lijst"
Code: Alles auswählen
ALTER TABLE "Lijst" DROP ...
- komprimiert die Datenbank
Code: Alles auswählen
CHECKPOINT DEFRAG
- Zoekscherm_F3K
- q_Top2000
- Qzoekfilter1_F3K
Versuchs mal, aber unbedingt mit angehängten Beispiel.
Gruß R
- Dateianhänge
-
- Top2000nieuw_prepared_F3K.zip
- nur entpacken
- (565.86 KiB) 139-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Top 10 liste machen
Ich finde es immer noch schwierig zu verstehen was Du gemacht hast, dafür sind meine Kenntnisse von Base zu niedrig war schon froh das ich soweit gekommen bin
.
Mit deine Erklärung versuch ich mich schlau zu machen.
Aber Du machst schöne Sachen .
Habe Deine Datei versucht und habe etwas gefunden was nicht stimmt, ich bekomme keine Auskunft bei die Value im mittlere Tabelle.
Und was ich noch nicht verstehen kann ist wie ich die ranking von 2015 eingeben kann (die ranking ist noch nicht bekannt)

Mit deine Erklärung versuch ich mich schlau zu machen.
Aber Du machst schöne Sachen .
Habe Deine Datei versucht und habe etwas gefunden was nicht stimmt, ich bekomme keine Auskunft bei die Value im mittlere Tabelle.
Und was ich noch nicht verstehen kann ist wie ich die ranking von 2015 eingeben kann (die ranking ist noch nicht bekannt)
Schöne grüße aus Emsland
Andreas
Andreas
Re: Top 10 liste machen
Hallo, da habe ich vergessen VALUE durch RANK zu ersetzen:
Rechtsklick auf das Formular Zoekscherm_F3K Bearbeiten, Rechtsklick auf Spaltenkopf VALUE -> Spalte.../Reiter Daten -> Datenfeld -> wähle RANK -> Formular speichern -> Datenbank speichern
Gruß R
Rechtsklick auf das Formular Zoekscherm_F3K Bearbeiten, Rechtsklick auf Spaltenkopf VALUE -> Spalte.../Reiter Daten -> Datenfeld -> wähle RANK -> Formular speichern -> Datenbank speichern
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Top 10 liste machen
Dass ging noch einfach und habe auch gesehen dass die Jahr liste automatisch wird angepasst so langsam an verstehe ich die Aufbau und die Filters.Und was ich noch nicht verstehen kann ist wie ich die ranking von 2015 eingeben kann (die ranking ist noch nicht bekannt)
Ich bedanke mich bei dir
VIELEN DANK
Schöne grüße aus Emsland
Andreas
Andreas
Re: Top 10 liste machen
den gibt's auch nichtAtwist hat geschrieben:... dem Befehl "DESC limit" kante ich nicht...

DESC bezieht sich auf ORDER BY und definiert ob absteigend oder aufsteigend sortiert wird. Der "ORDER BY"-Befehl wird standardmäßig als ASC (ascending) ausgeführt. Man muss also nicht "ORDER BY MeinFeld ASC" schreiben wenn man eine aufsteigende Sortierung wünscht. Für absteigende Sortierungen braucht's aber das DESC.
LIMIT m (bzw. LIMIT m OFFSET n)(*) ist eine eigenständige SQL-Anweisung, die den Server anweist nur m Zeilen zu suchen und dann aufzuhören. Dabei ist es wichtig zu wissen , dass es bei ex-aequo-Ergebnissen KEINE Regel gibt welcher Datensatz auf Platz 10 landet und welcher auf 11! Der elfte Datensatz wird natürlich NICHT geliefert, LIMIT 10 ist eben LIMIT 10.
Um alle ex-aeqo-Ergebnisse für Platz 10 zu sehen muss man etwa so vorgehen:
Code: Alles auswählen
Select * from TabelleX
where Rang >= (select Rang from TabelleX order by Rang desc LIMIT 1 OFFSET 9
)
order by Rang desc;
Anmerkung:
(*): OFFSET n bedeutet, dass n die Zeilen übersprungen werden und erst m Datensätze ab Zeile n+1 ausgegeben werden (siehe HSQL-DB-Doku). Das Schlüsselwort "OFFSET" ist bei der HSQLDB die bei LO 4.0.4. eingesetzt wird ein Muss! Ein Leerzeichen oder Komma (wie in MySQL) genügt nicht!
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: Top 10 liste machen
Wenn du die Ergebnisse von 2015 hast z.B. als Calc oder .csv, komm wieder, das geht mit ein paar SQL-Befehlen ...Atwist hat geschrieben:Und was ich noch nicht verstehen kann ist wie ich die ranking von 2015 eingeben kann
R
Windows 11: AOO, LO Linux Mint: AOO, LO
An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:
Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.