PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche SQL-Tut (Access)



Silver
21-03-2004, 16:49
Hallo!

Weiss jemand von euch ein freies Tut, Doc, etc. über SQL in Access?!? Ich schreibe hier absichtlich Access dazu, weil ich zwar Tuts gefunden habe, aber Access kann sich ja nicht an die Standards halten (haltet sich überhaupt eine DBMS an welche?) ....

Denn wenn ich zb 2 Tabellen habe, die eine (Mitglieder) mit Name, Vorname, Kurs-Nr(Foreign-Key) und eine zweite (Ident) mit Kurs-Nr (Primary-Key) und ID und ich jetzt nur die Namen ausgeben will, welche eine größere ID als 10 haben, da müsst es man ja so schreiben...



SELECT Name, Vorname
FROM Mitarbeiter, Ident
WHERE ID > 10;


Aber unter Access funkt das ja nicht, da muss man irgendwas mit INNER JOIN, UNIONS, etc. schreiben...... Was weiss ich :( ...

mfG

Hans-Georg Normann
21-03-2004, 19:24
Access, was is das denn schon wieder?

Kommen wir einmal zu deiner Abfrage. Du Selektierst aus zwei Tabellen. Üblicherweise muß du noch gemeinsamkeiten angeben, damit es funzt.

Ich präzisier einmal deine Abfrage: Du möchtest alle Mitglieder mit Namen und Vornamen gelistet haben, welche auch in Ident vorhanden sind.

In Standard SQL dürfte das dann etwa so aussehen
SELECT M.Name, M.Vorname
FROM Mitarbeiter M, Ident I
WHERE
I.KURS_NR = M.KURS_NR
and I.ID > 10;Ich habe den Tabellen einen Alias verpasst, ist nicht vorgeschrieben, vereinfacht aber die Sache. Man sieht sofort, welche Felder angesprochen werden.

Probier es einmal und berichte

Hans

Silver
22-03-2004, 19:24
Ich meine Mircosoft Access! (das unnötige *g*)

Danke ja es funkitioniert! Hab gehört man kann das auch mit INNER JOIN lösen! Wie funkt das?!? Wie funktionieren UNIONS?!?!

Hoffe du kannst mir antworten, hab übermorgen Test und bis dahin muss ich das können :D !!


mfG

PS: Danke im Voraus

Hans-Georg Normann
22-03-2004, 20:56
Original geschrieben von Silver
Ich meine Mircosoft Access! (das unnötige *g*) Wenn's unnötig ist, dann lösch es doch einfach :D Firebird rennt auch unter Windows und Linux!


Original geschrieben von Silver Danke ja es funkitioniert! Hab gehört man kann das auch mit INNER JOIN lösen! Wie funkt das?!? [/B] ggrrrr, immer dieser theoretische Kram. Da bin ich nicht so ganz sattelfest! Aber ich glaube, das ist ein INNER JOIN


Original geschrieben von Silver Wie funktionieren UNIONS?!?![/B]Bei UNIONS hast du zwei unterschiedliche Abfragen mit den gleichen Spaltenüberschriften und Datentypen. Bei Strings ist darauf zu achten, das diese in beiden Abfragen gleich lang sind. Würde etwa so aussehen

SELECT VORNAME, NACHNAME
FROM TABELLE1
WHERE NACHNAME LIKE "SCH%"
UNION
SELECT " " VORNAME, NACHNAME
FROM TABELLE2
WHERE NACHNAME LIKE "SCH%"
Ich gehe einmal davon aus, dass Tabelle2 kein Feld VORNAME hat und dieses in Tabelle1 25 Zeichen lang ist, also wird das Feld im zweiten Teil der Abfrage mit 25 Leerzeichen übergeben und benamt.

Ich hoffe, ich habe da keine Fehler eingebaut.

Hans

Alex_K
22-03-2004, 21:19
Original geschrieben von Silver
Danke ja es funkitioniert! Hab gehört man kann das auch mit INNER JOIN lösen! Wie funkt das?!? Wie funktionieren UNIONS?!?!


ich bin auch der meinung dass das schon ein inner join ist (mir sagt jetzt zwar inner join nichts direkt, aber in gegensatz zu outer join wäre es logisch).
eine alternative lösung wäre:



SELECT M.Name, M.Vorname
FROM Mitarbeiter JOIN Ident using(Kurs_nr)
WHERE Ident.ID > 10;


das ist aber komplett das gleiche, nur eine andere schreibweise.

Silver
24-03-2004, 19:41
Original geschrieben von Hans-Georg Normann
Wenn's unnötig ist, dann lösch es doch einfach :D Firebird rennt auch unter Windows und Linux!


Ja, aber wir verwenden SQL in Zusammenhang mit Datenbanken und Recordsets, etc. !

mfG