BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das OpenOffice 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 OpenOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als OO-SUPPORTER gekennzeichnet. 🤗
Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
Hallo zusammen,
auch ich bin ein Neuling in Sachen Datenbank und SQL. Trotzdem habe ich es geschafft, eine Datenbank für meine CD Sammlung zu erstellen die meinen Ansprüchen genügt. Es funktioniert alles so wie es soll, auch die Abfrage die ich mit mehreren Suchparametern ausgestattet habe. Allerdings funktioniert dort eine Kleinigkeit nicht so ganz. Ebenso möchte ich die Suche ein wenig verfeinern und komme bei beiden Sachen nicht weiter.
Zum einen möchte ich, wenn ich z.B. nach einem CD Titel suche und nicht den kompletten Titel weiß, sondern nur meinetwegen die letzten beiden Wörter, diese beiden eingeben und das entsprechende Ergebnis bekommen. Das funktioniert leider nicht. Ich muß immer mit dem ersten Wort anfangen.
Zum Anderen möchte ich die Suche nach dem Jahr, in dem ein Lied/eine CD erschienen ist auf einen Zeitraum erweitern, z.B. "Suche alles von 1975 bis 1980" Bisher funktioniert die Suche nur über die Eingabe eines bestimmten Jahres. Ich denke mal, das die Abfrage um ein "ist kleiner, ist größer und oder ist gleich" erweitert werden müßte. Doch leider weiß ich nicht wie ich das einbauen soll. Ich würde das gerne über 2 Eingabefelder im Suchformular lösen, einmal mit "Von" und einmal mit "Bis". Muß ich dafür im Filter 2 neue Felder anlegen, z.B. "F_JahrX" für "Von" und "F_JahrY" für "Bis" und diese dann irgendwie in der Abfrage mit dem "F_Jahr" verknüpfen? Und wie sieht das Ganze dann aus? Oder kann man das alles über den bestehenden Filter für das Jahr machen. Und wenn ja wie?
Ich habe mal die SQL Abfrage hier eingestellt und auch ein Screenshot von der Filtertabelle und einen von der Tabelle für die Datenerfassung.
Schonmal Danke im Vorraus für eine Lösung.
SELECT "ID", "CDNr", "Titel", "Interpret", "CDTitel", "TrackNr", "Genre", "CDTyp", "Sammlung", "Länge", "Jahr", "Kommentar" FROM "01_Datenerfassung"
WHERE ( LOWER ( "Titel" ) LIKE LOWER ( :Titel || '%' ) OR :Titel IS NULL ) AND
( LOWER ( "Interpret" ) LIKE LOWER ( :Interpret || '%' ) OR :Interpret IS NULL ) AND
( LOWER ( "CDTitel" ) LIKE LOWER ( :CDTitel || '%' ) OR :CDTitel IS NULL ) AND
( LOWER ( "Jahr" ) LIKE LOWER ( :Jahr || '%' ) OR :Jahr IS NULL ) AND
( LOWER ( "Genre" ) LIKE LOWER ( :Genre || '%' ) OR :Genre IS NULL ) AND
( LOWER ( "CDTyp" ) LIKE LOWER ( :CDTyp || '%' ) OR :CDTyp IS NULL ) AND
( LOWER ( "Sammlung" ) LIKE LOWER ( :Sammlung || '%' ) OR :Sammlung IS NULL )
auch ich bin ein Neuling in Sachen Datenbank und SQL. Trotzdem habe ich es geschafft, eine Datenbank für meine CD Sammlung zu erstellen die meinen Ansprüchen genügt. Es funktioniert alles so wie es soll, auch die Abfrage die ich mit mehreren Suchparametern ausgestattet habe. Allerdings funktioniert dort eine Kleinigkeit nicht so ganz. Ebenso möchte ich die Suche ein wenig verfeinern und komme bei beiden Sachen nicht weiter.
Zum einen möchte ich, wenn ich z.B. nach einem CD Titel suche und nicht den kompletten Titel weiß, sondern nur meinetwegen die letzten beiden Wörter, diese beiden eingeben und das entsprechende Ergebnis bekommen. Das funktioniert leider nicht. Ich muß immer mit dem ersten Wort anfangen.
Zum Anderen möchte ich die Suche nach dem Jahr, in dem ein Lied/eine CD erschienen ist auf einen Zeitraum erweitern, z.B. "Suche alles von 1975 bis 1980" Bisher funktioniert die Suche nur über die Eingabe eines bestimmten Jahres. Ich denke mal, das die Abfrage um ein "ist kleiner, ist größer und oder ist gleich" erweitert werden müßte. Doch leider weiß ich nicht wie ich das einbauen soll. Ich würde das gerne über 2 Eingabefelder im Suchformular lösen, einmal mit "Von" und einmal mit "Bis". Muß ich dafür im Filter 2 neue Felder anlegen, z.B. "F_JahrX" für "Von" und "F_JahrY" für "Bis" und diese dann irgendwie in der Abfrage mit dem "F_Jahr" verknüpfen? Und wie sieht das Ganze dann aus? Oder kann man das alles über den bestehenden Filter für das Jahr machen. Und wenn ja wie?
Ich habe mal die SQL Abfrage hier eingestellt und auch ein Screenshot von der Filtertabelle und einen von der Tabelle für die Datenerfassung.
Schonmal Danke im Vorraus für eine Lösung.
SELECT "ID", "CDNr", "Titel", "Interpret", "CDTitel", "TrackNr", "Genre", "CDTyp", "Sammlung", "Länge", "Jahr", "Kommentar" FROM "01_Datenerfassung"
WHERE ( LOWER ( "Titel" ) LIKE LOWER ( :Titel || '%' ) OR :Titel IS NULL ) AND
( LOWER ( "Interpret" ) LIKE LOWER ( :Interpret || '%' ) OR :Interpret IS NULL ) AND
( LOWER ( "CDTitel" ) LIKE LOWER ( :CDTitel || '%' ) OR :CDTitel IS NULL ) AND
( LOWER ( "Jahr" ) LIKE LOWER ( :Jahr || '%' ) OR :Jahr IS NULL ) AND
( LOWER ( "Genre" ) LIKE LOWER ( :Genre || '%' ) OR :Genre IS NULL ) AND
( LOWER ( "CDTyp" ) LIKE LOWER ( :CDTyp || '%' ) OR :CDTyp IS NULL ) AND
( LOWER ( "Sammlung" ) LIKE LOWER ( :Sammlung || '%' ) OR :Sammlung IS NULL )
- Dateianhänge
-
- Filter_Tabelle.jpg (202.28 KiB) 6483 mal betrachtet
-
- Datenerfassung_Tabelle.jpg (206.15 KiB) 6483 mal betrachtet
Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
Hallo,
zur ersten Frage, versuche mal das Prozentzeichen auch vorne dranzuhängen:
zur zweiten Frage:
EDIT: Da du ja für deine TEXTSPALTEN das Format VARCHAR_IGNORECASE() verwendest, kannst du getrost auf die "LOWER" verzichten, also so:
... und wenn du den vorderen Teil des Suchbegriffs nur selten nicht weißt, kannst du, anstatt die Abfrage komplett zu überarbeiten, das Prozentzeichen einfach als erstes Zeichen deines Suchstrings eintippen, ala
%way to hell
oder auch mittendrin, z.B.
%way%hell
Gruß R
zur ersten Frage, versuche mal das Prozentzeichen auch vorne dranzuhängen:
Code: Alles auswählen
WHERE ( LOWER ( "Titel" ) LIKE LOWER ( '%' ||:Titel || '%' ) OR :Titel IS NULL )
Ja! Und dann z.B. so:
Code: Alles auswählen
...WHERE ( "JAHR" >= :VON OR :VON IS NULL ) AND ( "JAHR" <= :BIS OR :BIS IS NULL )
Code: Alles auswählen
WHERE "Titel" LIKE '%' ||:Titel || '%' OR :Titel IS NULL
%way to hell
oder auch mittendrin, z.B.
%way%hell
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
Alles klar, werd ich mal ausprobieren. Vielen Dank schonmal.
Gruß
B.
Gruß
B.
Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
Hallo F3K,
also, das mit dem Prozentzeichen hat super geklappt und ich habe die Abfrage entsprechend abgeändert.
Die Zeitraumabfrage will mir aber nicht gelingen. Ich habe in der Filtertabelle die beiden Felder "Von" und "Bis" als Feldtyp "Text" hinzugefügt und die Abfrage geändert:
Dann habe ich im Abfrageformular 2 Eingabefelder hinzugefügt und über die Eigenschaften mit den entsprechenden Feldern in der Abfragetabelle verknüpft. Dann habe ich in den Eigenschaften des Anzeigeformulares die Verknüpfung für die beiden neuen Felder angelegt:
Verknüpfen von:
F_Titel
F_Interpret
F_CDTitel
F_Jahr
F_Genre
F_CDTyp
F_Sammlung
Von
Bis
Verknüpfen nach:
Titel
Interpret
CDTitel
Jahr
Genre
CDTyp
Sammlung
Jahr
Jahr
Wenn ich jetzt die Abfrage starte öffnet sich ein Extrafeld wo nach den beiden neuen Werten gefragt wird. Das sollte eigentlich nicht passieren da ich ja die beiden Eingabefelder erstellt habe. Wenn ich jetzt Daten eingebe, kommt immer eine Fehlermeldung (s. Bild)
Ich habe verschiedene Reihenfolgen und Verknüpfungen probiert. Hat nicht geklappt.
Wo habe ich einen (oder mehr) Fehler gemacht?
Danke Im Voraus
also, das mit dem Prozentzeichen hat super geklappt und ich habe die Abfrage entsprechend abgeändert.
Die Zeitraumabfrage will mir aber nicht gelingen. Ich habe in der Filtertabelle die beiden Felder "Von" und "Bis" als Feldtyp "Text" hinzugefügt und die Abfrage geändert:
Code: Alles auswählen
SELECT "ID", "CDNr", "Titel", "Interpret", "CDTitel", "TrackNr", "Genre", "CDTyp", "Sammlung", "Länge", "Jahr", "Kommentar" FROM "01_Datenerfassung"
WHERE ( "JAHR" >= :Von OR :Von IS NULL ) AND ( "JAHR" <= :Bis OR :Bis IS NULL )
AND ( LOWER ( "Titel" ) LIKE LOWER ( '%' || :Titel || '%' ) OR :Titel IS NULL )
AND ( LOWER ( "Interpret" ) LIKE LOWER ( '%' || :Interpret || '%' ) OR :Interpret IS NULL )
AND ( LOWER ( "CDTitel" ) LIKE LOWER ( '%' || :CDTitel || '%' ) OR :CDTitel IS NULL )
AND ( LOWER ( "Genre" ) LIKE LOWER ( :Genre || '%' ) OR :Genre IS NULL )
AND ( LOWER ( "CDTyp" ) LIKE LOWER ( :CDTyp || '%' ) OR :CDTyp IS NULL )
AND ( LOWER ( "Sammlung" ) LIKE LOWER ( :Sammlung || '%' ) OR :Sammlung IS NULL )
AND ( LOWER ( "Jahr" ) LIKE LOWER ( :Jahr || '%' ) OR :Jahr IS NULL )
Verknüpfen von:
F_Titel
F_Interpret
F_CDTitel
F_Jahr
F_Genre
F_CDTyp
F_Sammlung
Von
Bis
Verknüpfen nach:
Titel
Interpret
CDTitel
Jahr
Genre
CDTyp
Sammlung
Jahr
Jahr
Wenn ich jetzt die Abfrage starte öffnet sich ein Extrafeld wo nach den beiden neuen Werten gefragt wird. Das sollte eigentlich nicht passieren da ich ja die beiden Eingabefelder erstellt habe. Wenn ich jetzt Daten eingebe, kommt immer eine Fehlermeldung (s. Bild)
Ich habe verschiedene Reihenfolgen und Verknüpfungen probiert. Hat nicht geklappt.
Wo habe ich einen (oder mehr) Fehler gemacht?
Danke Im Voraus
- Dateianhänge
-
- Fehlermeldung.jpg (259.69 KiB) 6438 mal betrachtet
Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
Hi,
die Verknüpfungen müssten eigentlich Von:Von und Bis:Bis heißen, oder? Deine Parameter heißen doch :Von und :Bis!
die Verknüpfungen müssten eigentlich Von:Von und Bis:Bis heißen, oder? Deine Parameter heißen doch :Von und :Bis!
Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
Ja, aber wenn ich das so eingebe, kommt direkt die Fehlermeldung. Ich möchte ja die angelegten Filter mit den Feldern in der Ausgabetabelle verknüpfen und in dem Feld "Jahr" alles angezeigt bekommen, was ich mit den Feldern "Von" "Bis" definiert habe. Daher dachte ich, das ich die Felder auch so verknüpfen muß (s. Bild)
- Dateianhänge
-
- Verknüpfung.jpg (357.83 KiB) 6431 mal betrachtet
Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
Hallo,
Born_001 hat mir die DB neben diesem Forum zukommen lassen, war mit 9MB zu groß. Ich habe sie korrigiert und kompromiert, jetzt sind es nur noch 38 kb. Ich hatte Recht mit Von:Von, Bis:Bis und deine Spalte "Jahr" heißt eben nicht "JAHR". Wenn du magst, kann ich die funzende DB hier hochladen.
Gruß R
Born_001 hat mir die DB neben diesem Forum zukommen lassen, war mit 9MB zu groß. Ich habe sie korrigiert und kompromiert, jetzt sind es nur noch 38 kb. Ich hatte Recht mit Von:Von, Bis:Bis und deine Spalte "Jahr" heißt eben nicht "JAHR". Wenn du magst, kann ich die funzende DB hier hochladen.
Gruß R
Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
O.K. Super, das wäre nett mit dem Hochladen. Vielen Dank für Deine Mühe.
Viele Grüße
B.
Viele Grüße
B.
Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
Bittesehr
- Dateianhänge
-
- 2018_CD Musikdatenbank_02_Test.zip
- (26.41 KiB) 251-mal heruntergeladen
Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen
Dankeschön, vielleicht hätt ich mal besser lesen sollen, wegen Groß-und Kleinschreibung.