PDA

View Full Version : SQL Frage



Bratmaxxe
24-01-07, 16:42
Moinsen,

ich komm mit einer SQL Abfrage nicht weiter...

Gegeben sind folgende Tabellen:

DB_User:
UID (Primärschlüssel)
Name
Vorname

DB_VER:
FID (Primärschlüssel)
Kennung
Bezeichnung

DB_POS:
PID (Primärschlüssel)
UID (Wert aus DB_User UID)
SID (Wert aus DB_User UID)
FID (Wert aus DB_VER FID)
Datum
....


Es sollen nun alle Daten über INNER Join miteinander verknüpft werden, ausgehend von der DB_POS.

Ein einfaches Join bekomme ich hin...



SELECT DB_POS.*, DB_USER.Name, DB_USER.Vorname, DB_VER.Kennung, DB_VER.Bezeichnung
from ( db_pos inner join db_user on db_pos.uid = db_user.uid) INNER JOIN DB_VER ON DB_POS.FID = DB_VER.FID;


Verknüpft ist jetzt lediglich der Name und Vorname über die UID mit der DB_User.

Problem ist die weitere Verknüpfung über die SID (hier wird ebenfalls noch der Name und Vorname) aus DB_User benötigt.

Ich komm einfach nicht weiter... Weiß jemand wie der Ausdruck lauten müsste ?

Danke und Gruß
Bratmaxxe

Fuerchau
24-01-07, 17:36
Einface Syntax:

select *
from filea
inner join fileb on ...
inner join filec on ...

Bei "from (..." wird eine Zwischentabelle genriert, die absolut unnötig ist.

Bratmaxxe
24-01-07, 17:52
Hallo Fuerchau !

Danke Dir...


Access mag nur nachfolgende Syntax:




SELECT DB_POS.*, DB_USER.Name, DB_USER.Vorname, DB_USER_1.Name, DB_USER_1.Vorname, DB_VER.Kennung, DB_VER.Bezeichnung
FROM DB_USER AS DB_USER_1, (DB_POS INNER JOIN DB_USER ON DB_POS.UID = DB_USER.UID) INNER JOIN DB_VER ON DB_POS.FID = DB_VER.FID;



Allerdings hab ich jetzt ein Kreuzprodukt, so scheint mir.... jeder eindeutige Datensatz aus DB_POS wird 3 mal angelistet... das soll ja gar nicht...

Die von Dir vorgeschlagene Syntax mag Access nicht

select *
from db_pos
inner join db_user a on db_pos.uid = a.uid
inner join db_user b on db_pos.sid = b.uid


Was tun sprach Zeus ?

Ich hoffe mein Problem ist hier klar geworden ?

In der DB_POS (UID und SID) stehen ID's aus DB_USER

jetzt benötige ich mittles Join den Namen und Vornamen aus DB_USER für die beiden ID's und datt bekomm ich nicht auf die Reihe... das ist erstmal das Hauptproblem...

Gruß
Bratmaxxe

Fuerchau
24-01-07, 18:51
Mach eine SQL-Pasthru-Abfrage oder verwende die graphische Oberfläche.
Füge einfach die Tabellen ein und ziehe die Verbindung per Drag/Drop von einer Tabelle zur anderen.
Per Doppelklick auf die Linie bestimmst du die Beziehungsart (1:1, 1:N, N:1).

Bratmaxxe
24-01-07, 19:17
....

vielen Dank !

Hat funktioniert ;)

Gruß
Brat