SQL Abfrage
Flownie
- datenbank
Hallo
Ich versuche mal, mein Problem so einfach wie möglich darzustellen. Ich habe als erstes eine Tabelle t_documents, mit den Feldern ID, directoryID und documentName. Also etwa so:
ID directoryID documentName
1 1 Name 1
Also dies ist ein Dokument, das im Ordner mit der ID 1 liegt.
Nun können von diesem Dokument aber Referenzen auf andere Ordner erstellt werden. Dafür habe ich die Tabelle t_referenzen, mit den Feldern ID, documentID, directoryID. Also so:
ID documentID directoryID
1 1 10
2 1 20
Das Dokument hat also eine Referenz auf die Verzeichnisse 10 und 20.
Nun müsste ich eine Abfrage haben, die die beiden Tabellen verknüpft und mir alle Verzeichnisse bringt, in der das Dokument liegt. Das Ergebniss müsste so aussehen:
documentID directoryID documentName
1 1 Name 1
1 10 Name 1
1 20 Name 1
Schwierig zu erklären, kann mir da jemand weiterhelfen?
Hallo Flownie,
Schwierig zu erklären, kann mir da jemand weiterhelfen?
[...]
ich versuche mal mein Glück.
Ohne jetzt auf den (nicht optimalen) Aufbau Deiner Datenbank einzugehen sollte diese Abfrage das liefern was Du willst ... oder zumindest das was ich glaube aus Deiner Erkläreung heraus zu lesen vermag.
select
tr.documentID ,
tr.directoryID ,
tr.documentName
from
t_documents td
t_referenzen tr,
where
td.documentID = tr.documentID
Grüße!
Holger
Hello,
Nun müsste ich eine Abfrage haben, die die beiden Tabellen verknüpft und mir alle Verzeichnisse bringt, in der das Dokument liegt.
da kann ich dir nur wärmstens die Artikel im Datenbankbereich von SELFHTML empfehlen, die sich mit Joins befassen.
MfG
Rouven
Wenn ich die Tabellen mit Join verknüpfe, erscheinen jeweils nur die Verzeichnisse aus t_referenzen.
Egal wie ich es lösen will, das einzelne Ergebniss (Verzeichnis) aus der Tabelle t_documents erscheint nie, sondern nur die Referenzen.
Hello,
Egal wie ich es lösen will, das einzelne Ergebniss (Verzeichnis) aus der Tabelle t_documents erscheint nie, sondern nur die Referenzen.
das stimmt, weil das erstmal Wissen ist, was über den Join hinaus geht. Der Join kann nur die Referenzen auflösen. Wenn du zusätzlich das echte Verzeichnis brauchst musst du folgenden UNION verwenden
SELECT ... <hier die Abfrage mit JOIN> ...
UNION
SELECT id AS documentID, directoryID, documentName FROM t_documents
MfG
Rouven
yo,
SELECT ... <hier die Abfrage mit JOIN> ...
UNION
SELECT id AS documentID, directoryID, documentName FROM t_documents
ich würde hier wieder UNION ALL bevorzugen....
Ilja
Ich würde das mal ganz prinzipiell das anders aufbauen.
_$Spaltenname_ => PRIMARY KEY
t_documents(_docID_, docName):
docID docName
1 Name1
2 Name2
3 Name3
t_references(_docID_, _dirID_)
docID dirID
1 10
1 10
2 10
3 20
Deine Abfrage würde dann so lauten:
SELECT t.docID, t.dirID, d.docName
FROM t_references r
INNER JOIN t_documents d ON t.docID = d.docID
Ich hoffe ich habe deine Aufgabe nicht falsch verstanden