• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

SQL-Statement erweitern

Guido

New member
Hallo zusammen!

Dieses SQL-Statement:
SELECT lehrer.l_id,lehrer.l_name,lehrer.l_vorname,lehrer_index.l_s_fach1,lehrer_index.l_s_fach2,lehrer_index.l_s_fach3,
lehrer_index.l_s_fach4,lehrer_index.l_s_fach5
FROM lehrer,lehrer_index
WHERE lehrer_index.l_id=lehrer.l_id
ORDER BY l_id ASC
*PUH*watt*nen*teil*
liefert mir folgendes Ergebnis
output.gif


Frage: Wie bekomme nur die raus, die bei l_s_fach1, oder l_s_fach2/3/4/5, als Wert DEU eingetragen haben?
WHERE .... AND lehrer_index.l_s_fach1=DEU , oder OR lehrer_index.l_s_fach1=DEU tuts nicht!


Ade
Guido
 
Hallo!

So müßte es gehen:

SELECT lehrer.l_id,
lehrer.l_name,
lehrer.l_vorname,
lehrer_index.l_s_fach1,
lehrer_index.l_s_fach2,
lehrer_index.l_s_fach3,
lehrer_index.l_s_fach4,
lehrer_index.l_s_fach5
FROM lehrer,lehrer_index
WHERE lehrer_index.l_id=lehrer.l_id
AND
(lehrer_index.l_s_fach1='DEU' OR
lehrer_index.l_s_fach2='DEU' OR
lehrer_index.l_s_fach3='DEU' OR
lehrer_index.l_s_fach4='DEU' OR
lehrer_index.l_s_fach5='DEU')
ORDER BY l_id ASC
 
Da DEU ein Text ist mußt Du ihn mit ' einschliessen... also 'DEU'.......

Allerdings stellt sich die Frage ob Dein DB Entwurf nicht ein bisschen änderungs-un-freundlich ist, da die Anzahl der Fächer anscheinend für "alle Zeit" gefixt ist.... es mag Gründe geben die Fächer in einer Zeile aufzuführen, aber dritte Normalform ist des nicht ;););)
 
@ comet
Danke! Klammern, mann wie einfach, Klammern! :cool:

@Albu
Ein Vorgabe des Förderprojektes ist, dass Lehrer nicht mehr als 5 Kurse haben sollen, genauso wenig wie Schüler das haben sollen. Von daher reicht es soweit aus!
Ja, den Codd hab ich schon immer nicht wirklich verstanden (oder hatte nicht die Lust mich dahinter zu klemmen...) aber du kannst es mir gerne verständlich machen! ;)

Ade
Guido
 
Klar kann das eine Einschränkung werden, aber man nimmt doch - wenn man nicht soviel Erfahrung hat - meist erst die naheliegendste Lösung. Wenn die dann noch funktioniert... ;)
Nach Codd muss ich Tabellen AFAIK soweit zerlegen, dass die Inhalte nicht redundant sind. Hab ich, denke ich, soweit gemacht: die Lehrer-Personen-Daten (tabelle lehrer), die Fächer (tabelle faecher - wird auch für Schüler benutzt), die Lehrer-Fächer-Kombination (tabelle lehrer_index) - fehlt da was?
Wenn ich Dich jetzt richtig verstehe sagt der gute Codd auch noch, dass ???
Keine Ahnung was er sagt, aber aus deinem Post lese ich heraus, dass es besser wäre nicht die Felder l_s_fach1/2/3... zu haben, sondern nur das Feld l_s_faecher. In das Feld sollte ich einen String (DEU MAT ENG --- ---) eintragen, um später die Möglichkeit zu haben auch noch ein sechstes, siebtes Fach hinzuzufügen? Bekomme ich den String denn ausgelesen mit LIKE? Oder lauf ich gerade voll ins Messer oder vor die Wand? *boing*
 
Hallo!

Ich glaube die beste Lösung um das ganze auch ganz schnell erweitern zu können, bzw. braucht man da dann eigentlich nichts mehr tun:

Noch ne Tabelle mit diesen Fächern drin und diese dann mit der id der lehrer_Tabelle verknüpfen. Dann kann man einfach ein Fach(Datensatz) hinzufügen und der jeweiligen ID(dem Lehrer) in der Lehrertabelle zuordnen. Dann braucht man nur mehr die beiden Tabellen mit JOIN verknüpfen und bekommt dann alle Fächer des jeweiligen Lehrers ausgegeben, egal wieviel.
Wäre ne Überlegung wert, aber wenn es mit ziemlicher Sicherheit nicht mehr Fächer werden wär mir das persönlich auch Wurst(Außerdem ist es ja eh bekannt daß es einen Lehrer mit mehr als 5 Fächern fast nirgends gibt :) ).
 
Auch nicht schlecht! :) Es gibt ja grössere Hürden als ein JOIN ;) -> Tolle Suchfunktion ohne die hätte ich das Statement wohl nicht so schnell auf die Reihe bekommen ;)
Bei uns ist es wie gesagt Vorgabe, dass kein Lehrer mehr als fünf Fächer unterrichtet. Allerdings läuft das Projekt schon seit langem in Essen und unsere Projektleiterin hier meinte, dass wir/ich die Verwaltung ruhig dahin verkaufen sollte/n! Was die wieder für Vorgaben haben weiss ich nicht - Flexibilität mit wenig Aufwand ist also gern gesehen bei mir ;)

Ade
Guido
 
Zuletzt bearbeitet:
Zurück
Oben