Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

BASE ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit OpenOffice.org zu bearbeiten.
Antworten
born_001
Beiträge: 6
Registriert: Do 15. Feb 2018, 19:48

Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

Beitrag von born_001 » Do 15. Feb 2018, 20:11

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 )
Dateianhänge
Filter_Tabelle.jpg
Filter_Tabelle.jpg (202.28 KiB) 709 mal betrachtet
Datenerfassung_Tabelle.jpg
Datenerfassung_Tabelle.jpg (206.15 KiB) 709 mal betrachtet

F3K Total
Beiträge: 788
Registriert: Mo 1. Aug 2011, 00:03

Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

Beitrag von F3K Total » Fr 16. Feb 2018, 18:11

Hallo,
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 )
zur zweiten Frage:
born_001 hat geschrieben:
Do 15. Feb 2018, 20:11
Muß ich dafür im Filter 2 neue Felder anlegen, z.B. "F_JahrX" für "Von" und "F_JahrY" für "Bis"
Ja! Und dann z.B. so:

Code: Alles auswählen

...WHERE ( "JAHR" >= :VON OR :VON IS NULL ) AND ( "JAHR" <= :BIS OR :BIS IS NULL )
EDIT: Da du ja für deine TEXTSPALTEN das Format VARCHAR_IGNORECASE() verwendest, kannst du getrost auf die "LOWER" verzichten, also so:

Code: Alles auswählen

WHERE "Titel"  LIKE  '%' ||:Titel || '%'  OR :Titel IS NULL 
... 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

born_001
Beiträge: 6
Registriert: Do 15. Feb 2018, 19:48

Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

Beitrag von born_001 » Fr 16. Feb 2018, 20:02

Alles klar, werd ich mal ausprobieren. Vielen Dank schonmal.
Gruß
B.

born_001
Beiträge: 6
Registriert: Do 15. Feb 2018, 19:48

Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

Beitrag von born_001 » So 18. Feb 2018, 12:57

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:

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 )
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
Dateianhänge
Fehlermeldung.jpg
Fehlermeldung.jpg (259.69 KiB) 664 mal betrachtet

F3K Total
Beiträge: 788
Registriert: Mo 1. Aug 2011, 00:03

Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

Beitrag von F3K Total » So 18. Feb 2018, 14:26

Hi,
die Verknüpfungen müssten eigentlich Von:Von und Bis:Bis heißen, oder? Deine Parameter heißen doch :Von und :Bis!

born_001
Beiträge: 6
Registriert: Do 15. Feb 2018, 19:48

Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

Beitrag von born_001 » So 18. Feb 2018, 16:59

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
Verknüpfung.jpg (357.83 KiB) 657 mal betrachtet

F3K Total
Beiträge: 788
Registriert: Mo 1. Aug 2011, 00:03

Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

Beitrag von F3K Total » So 18. Feb 2018, 17:28

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
Beiträge: 6
Registriert: Do 15. Feb 2018, 19:48

Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

Beitrag von born_001 » So 18. Feb 2018, 18:05

O.K. Super, das wäre nett mit dem Hochladen. Vielen Dank für Deine Mühe.
Viele Grüße
B.

F3K Total
Beiträge: 788
Registriert: Mo 1. Aug 2011, 00:03

Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

Beitrag von F3K Total » So 18. Feb 2018, 20:18

Bittesehr
Dateianhänge
2018_CD Musikdatenbank_02_Test.zip
(26.41 KiB) 19-mal heruntergeladen

born_001
Beiträge: 6
Registriert: Do 15. Feb 2018, 19:48

Re: Abfrage für einen Zeitraum erstellen und Abfrage auf ein "Teilwort" einstellen

Beitrag von born_001 » So 18. Feb 2018, 22:52

Dankeschön, vielleicht hätt ich mal besser lesen sollen, wegen Groß-und Kleinschreibung.

Antworten