WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   MS Access Abfrage (http://www.wcm.at/forum/showthread.php?t=135661)

mr_sax 31.05.2004 14:35

MS Access Abfrage
 
Hallo!

Habe folgendes Problem:

Ich möchte in einer Videofilm - Datenbank eine Abfrage nach Schauspielern erstellen (nach Titel, Regisseur, etc. klappt es bereits)!
Das Problem: ich habe bis zu 15 Spalten mit Schauspielern - möchte aber nur einmal den Schauspielernamen eingeben und dann in allen Spalten suchen lassen!

Ich verwende bei der Entwrufsansicht des Abfrageassistenten immer folgenden Eintrag in der Kriterienzeile:

[Filme]![Schauspieler:]

Die Datenbank heißt Filme, die Spalten heißen Schauspieler1, Schauspieler2, usw.

Leider bekomme ich bei dieser Art der Abfrage immer nur die Schauspieler, welche auch in der ersten Spalte sind - von der 2., 3. od. einer weiteren Spalte bekomme ich kein Ergebniss zurück!

Kann mir da jemand von euch weiterhelfen? Ich bin mir sicher, dass das funktionieren muss, aber wie??

Vielen Dank!

mr_sax

Nightman 31.05.2004 14:54

wieso machst ned eine einzige spalte mit schauspieler und suchst dann mit LIKE?

wbendl 31.05.2004 15:25

Hi!

Die Konstruktion der DB solltest du vielleich überdenken.

Im aktuellen Fall versuch folgendes.

Öffne die Abfrage in der SQL-Ansicht. Da sollte etwas in der Art stehen WHERE Schauspieler1 = Schauspieler

Erweitere den Abschnitt mit OR Schauspieler2 = Schauspieler OR ...


Falls es nicht funktioniert, poste das SQL-Statement.

mfg

WB

Nightman 31.05.2004 15:31

wbendl

sei mir bitte ned böse aber des ja ja keine abfrage mehr des is ein zustand

wenn er alle schauspieler in ein feld reinschreibt und dann mit like abfragt is er sicher besser dran oder?

PS: kann jetzt auch sein das ich mich irgentwo irre da ich ja noch rest alk in mir hab lol

wbendl 31.05.2004 16:02

@ Nightman

Achte auf die 1. Zeile:
Die Konstruktion der DB solltest du vielleich überdenken.

Der Rest zählt nur, wenn das nicht zu ändern ist.

Die Verwendung des Assistenen läßt mich auf einen Einsteiger schließen.
Da kann man kein optimales DB-Design erwarten.

mfg

WB

Nightman 31.05.2004 16:04

ok erlaubnis erteilt :)

mr_sax 31.05.2004 18:05

OK - vielen Dank für die vielen Antworten!

Ich werde gleich einmal die Sache mit der LIKE Funktion probieren! (d.h. alle Schauspieler in eine Zelle schreiben)

Melde mich dann wieder mit dem Ergebnis!

mr_sax

mr_sax 31.05.2004 18:14

Sorry, aber es ist meine "erste Datenbank" und irgendwie krieg ich das nicht hin!

1. Frage: wie sollen die Schauspieler in der jeweiligen Zelle von einander getrennt sein, z.B. mit ","?
2. Frage: hier ist die SQL Zeile:

SELECT Filme.[Deutscher Titel], Filme.[Original Titel], Filme.Regie, Filme.Format, Filme.Sprache, Filme.Schauspieler1, Filme.Schauspieler2, Filme.Schauspieler3, Filme.Schauspieler4, Filme.Schauspieler5, Filme.Schauspieler6, Filme.Schauspieler7, Filme.Schauspieler8, Filme.Schauspieler9, Filme.Schauspieler10, Filme.Schauspieler11, Filme.Schauspieler12, Filme.Schauspieler13, Filme.Schauspieler14, Filme.Schauspieler15
FROM Filme
WHERE (((Filme.Schauspieler1)=[Filme]![Schauspieler1]![Schauspieler:]));

Könnt ihr damit etwas anfangen, bzw. mir einen Tipp geben, was mir "zu meinem Glück" fehlt?

Vielen Dank!

mr_sax

wbendl 31.05.2004 19:46

Hi!

Ich weiß zwar nicht, wie der Suchbegriff in die Abfrage kommt.

Ich nehme an, daß [Filme]![Schauspieler1]![Schauspieler:] aus einem Formular, oder aus einer Parameterabfrage stammt.

Wenn das SQL-Statement so funktioniert, sollte die Erweiterung so aussehen:

WHERE (((Filme.Schauspieler1)=[Filme]![Schauspieler1]![Schauspieler:])OR ((Filme.Schauspieler2)=[Filme]![Schauspieler1]![Schauspieler:]))

Einfacher zu Handhaben ist die Lösung mit allen Schauspielern in einem Feld.

Die "professionelle" Lösung würde ungefähr so aussehen:

Tabelle Filme
ID
Titel
OriginalTitel
.......

Tabelle Schauspieler
ID
Name
........

Tabelle FilmDetails
ID
FilmeID
SchauspielerID

Die Tabelle FilmDetails enthält eine Zeile für jeden Schauspieler pro Film.

Das ist zwar am Anfang mehr Arbeit, lohnt sich aber später.
Die Pflege und Auswertung der Daten wird erleichtert.
Redundante Einträge werden vermieden.
Außerdem läßt sich die DB leichter erweitern (z. B. zusätzliche Daten zu den Schauspielern).

Wenn man diese "Normalisierung" weiter betreibt, könnte man auch Regie und Formate in eigenen Tabellen auslagern.
Das rentiert sich ab eine gewissen Größe der DB.

mfg

WB

mr_sax 31.05.2004 22:19

Vielen Dank für diese detailierte Antwort!

Ich werde das morgen ausprobieren und hoffe, dass ich das auch so hinkriege!

mr_sax


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag