Autor |
Beitrag |
Nakisu
Hält's aus hier
Beiträge: 15
|
Verfasst: So 30.01.05 13:28
Guten Tag
Ich plag mich seit Stunden mit einer SQL Abfrage über mehrere Tabellen ab :'(
DB: Paradox 7
Tabellen
Personen: Id, Name, Vorname, ...
Kurse: Id, Name
Personen_Kurse: Id, Id_Person, Id_Kurs
Ich möchte nun alle Personen aus der Tab "Personen", die im Kurs mit Id 1 sind auslesen
Der SQL String sieht so aus:
SELECT Personen.* FROM Personen JOIN
Personen_Kurse ON Personen.Id = Personen_Kurse.Id_Person
WHERE Personen_Kurse.Id_Kurs = 1 ORDER BY Personen.Name,
Personen.Vorname
Leider erhalte ich immer die Fehlermeldung:
Invalid use of Keyword.
Token: =
Line Number: 3
Ich hab keine Ahnung, wo hier das Problem liegt und bin dankbar für jeden Hinweis
LG
Nakisu
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: So 30.01.05 14:48
hallo nakisu!
zunächst mal willkommen im forum
das sieht mir schon mal sehr komisch aus. wofür steht hier '.*'?
versuchs mal so:
einfach ins forum getippt - ganz ohne gewähr
Zitat: |
SELECT p.Zuname, p.Vorname FROM Personen p
JOIN Personen_Kurse pk ON (p.Id = pk.Id_Person)
WHERE (pk.Id_Kurs = 1)
ORDER BY p.ZuName, p.Vorname
|
mfg, stefan
_________________ mfg, stefan
|
|
Nakisu 
Hält's aus hier
Beiträge: 15
|
Verfasst: So 30.01.05 15:36
Heyho
Herzlichen Dank schon mal für die Antwort!
Das * hab ich geschrieben, weil ich alle Felder auslesen will. Ich hab jetzt mal deine Version angepasst und folgenden Befehl kreiert
Quelltext 1: 2: 3: 4:
| SELECT p.Name, p.Vorname, p.Strasse, p.PLZ, p.Ort, p.TelG, p.TelP, p.Natel, p.Fax, p.Mail, p.Website, p.Beruf, p.Funktion, p.Notizen, p.Id FROM Personen p JOIN Personen_Kurse pk ON (p.Id = pk.Id_Person) WHERE (pk.Id_Kurs = 1) ORDER BY p.Name, p.Vorname |
Leider krieg ich immer noch die selbe Fehlermeldung
An was könnte das noch liegen?
LG
Nakisu
Moderiert von raziel: Code-Tags hinzugefügt
|
|
Nakisu 
Hält's aus hier
Beiträge: 15
|
Verfasst: So 30.01.05 16:40
Na toll!
Ich hab alle Tabellen gelöscht und neu angelegt und nun taucht die Fehlermeldung bei einer normalen Abfragen nicht mehr auf.
 Wieso auch immer
Bei folgender Abfrage motzt er aber immer noch:
SELECT p.Name, p.Vorname, p.Strasse, p.PLZ, p.Ort, p.TelG, p.TelP, p.Natel, p.Fax, p.Mail, p.Website, p.Beruf, p.Funktion, p.Notizen, p.Id
FROM Personen p
JOIN Personen_Kurse pk ON (p.Id = pk.Id_Person)
WHERE pk.Id_Kurs = 1
AND pk.Id_Kurs = 2
ORDER BY p.Name, p.Vorname
d.h. ich möchte eigentlich hier die Personen auslesen, die sowohl in Kurs 1, wie in Kurs 2 sind. Also in der Tabelle Personen_Kurse Id_Person nur auslesen, wenn folgende Einträge vorhanden sind:
Id_Person = 1, Id_Kurs = 1
Id_Person = 1, Id_Kurs = 2
Vermutlich stört sich hier SQL daran, dass ich 2x die selbe Spalte abfrage mit einem anderen Wert.
LG
Nakisu
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: So 30.01.05 17:55
Zitat: | die sowohl in Kurs 1, wie in Kurs 2 sind |
bei uns heisst es aber ... die sowohl in kurs 1, als auch...
bei euch nicht?
versuch es mal so
Quelltext 1:
| WHERE (pk.Id_Kurs = 1) OR (pk.Id_Kurs = 2) |
untested & ohne gewähr
//Edit (zu spät gelesen...)
Zitat: |
Das * hab ich geschrieben, weil ich alle Felder auslesen will
|
dafür reicht auch ein einfaches
Quelltext 1:
| SELECT * FROM Tabellenname |
_________________ mfg, stefan
|
|
Nakisu 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 31.01.05 19:40
Heyho
Möge er mein "wie" entschuldigen... machmal bricht der Schweizer mit mir durch  - aber danke für den Hinweis.
Wenn ich eine OR Abfrage mache, heisst das dann doch, dass eine Person ausgelesen wird wenn sie entweder in Kurs 1 ist oder in Kurs 2 ist, ich möchte aber in diesem Fall nur die Leute auslesen können, die in beiden Kursen sind.
Das OR Problem ist ein weiteres... Wenn ich Personen auslesen möchte, die entweder in Kurs 1 oder in Kurs 2 sind, dann listet es mir die Personen 2x auf, die sowohl in Kurs 1, als (ja aaaals) auch in Kurs 2 sind.
*grübel*
LG
Nakisu
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Mo 31.01.05 19:53
hallo nakisu!
bei logischen abfragen ist es eben so, dass du alle kursteilnehmer von kurs_1 und alle von kurs_2 nur dann erhältst, wenn du eine OR-abfrage startest, denn nur dann sucht sql alle einträge des feldes 'kurse' in denen er entweder 'kurs1' oder 'kurs2' vorfindet. beides gleichzeitig wird ja nicht eingetragen sein. hoffe ich halt!
mit AND-verknüpfungen reiht man bedingungen aus mehreren feldern, welche gleichzeitig zutreffen sollen.
dein 2. OR-problem ist logisch: sobald eine person mehrere kurse besucht hat, dann taucht sie im ergebnis eben so oft auf, wie sie kurse besucht hat
ps: grüße in die heimat von wilhelm tell! 
_________________ mfg, stefan
|
|
Nakisu 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 31.01.05 20:11
Heyho
Das heisst, ich kann das Problem nicht mit SQL lösen...
Werd mir was anderes überlegen.
Aber herzlichen Dank für all die Antworten - gelernt hab ich trotzdem einiges.
LG
Nakisu
ps. Danke 
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Mo 31.01.05 20:49
Zitat: | Das heisst, ich kann das Problem nicht mit SQL lösen... |
na, das hab ich aber nicht behauptet...
wenn dir gleich ist, wieviele kurse ein teilnehmer besucht hat, dann frag nach
Quelltext
ab.
untested & ohne gewähr.. (ja, auch ohne armbrust  )
_________________ mfg, stefan
|
|
Nakisu 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mo 31.01.05 21:05
hm... kurse not NULL würde bedeuten, dass eine Person ausgewählt wird, wenn sie mindestens einen Kurs besucht hat - aber egal welchen?
ich ziehe sowieso Schwerter vor 
|
|
grayfox
      
Beiträge: 800
win98, winXP
D4 Standard; D6 Personal
|
Verfasst: Mo 31.01.05 21:10
nein, vergiss es wieder - damit bekommst du jeden kursteilnehmer wieder öfters, sofern er mehrere kurse besucht hat
bedeutet, dass der teilnehmer mindestens einen kurs besucht haben muss, damit der im ergebnis angeführt wird, d.h. das feld 'kurs' darf nicht leer sein.
verwende lieber , damit bekommst du jeden datensatz nur einmal angezeigt...
ps: wie wärs mit pfeil & bogen? 
_________________ mfg, stefan
|
|
Nakisu 
Hält's aus hier
Beiträge: 15
|
Verfasst: Mi 02.02.05 09:42
Sehr schön
Das werd ich gleich versuchen...
Herzlichen Dank!
p.s. auch nett  aber wenn mal alle Pfeile verschossen sind, haste pech
|
|
|