Salve!
Nach längerer Abwesenheit muss ich heute erneut eine Frage stellen. Es geht dabei um einen INNER JOIN auf der gleichen Tabelle.
Der Hintergrund: Ich will eine Art Dokument wieder "zusammensetzen", welches in einzelnen Tupeln gespeichert wurde. Sprich, jeder Abschnitt eines Dokuments (Frage, Antwort, Anhänge, etc.) bildet je einen Datensatz. Verknüpfen könnte man die per itemid. Der Primarykey ist irgendeine andere fortlaufende Nummer, die ich nicht weiter benötige.
Daneben wird überprüft, ob das Dokument überhaupt freigegeben wurde, den richtigen Personenkreis und überhaupt zum geforderten Typ gehört. Diese drei Prüfungen sind weniger das Problem und funktionieren soweit.
Wie bekomme ich jetzt den JOIN da rein? Die o.g. Abfrage wirft etwa folgendes aus:
Ich habe dann mal hiermit experimentiert:
Letztlich kam das gleiche Resultset wie ohne die JOIN-Zeile.
Was mache ich falsch? Habe ich irgendwo einen Denkfehler?
Nach längerer Abwesenheit muss ich heute erneut eine Frage stellen. Es geht dabei um einen INNER JOIN auf der gleichen Tabelle.
Der Hintergrund: Ich will eine Art Dokument wieder "zusammensetzen", welches in einzelnen Tupeln gespeichert wurde. Sprich, jeder Abschnitt eines Dokuments (Frage, Antwort, Anhänge, etc.) bildet je einen Datensatz. Verknüpfen könnte man die per itemid. Der Primarykey ist irgendeine andere fortlaufende Nummer, die ich nicht weiter benötige.
Daneben wird überprüft, ob das Dokument überhaupt freigegeben wurde, den richtigen Personenkreis und überhaupt zum geforderten Typ gehört. Diese drei Prüfungen sind weniger das Problem und funktionieren soweit.
SQL:
SELECT
DOCUMENT.name,
DOCUMENT.itemid,
ITEM.modificationdate,
DOCUMENTFIELD.name,
DOCUMENTFIELD.cdata
FROM DB.DOCUMENT, DB.ITEM, DB.DOCUMENTFIELD
WHERE
DOCUMENT.statusid = "1120"
AND DOCUMENT.communityid = "2"
AND DOCUMENT.templateid = "5"
AND ITEM.id = DOCUMENT.itemid
AND DOCUMENT.itemid = DOCUMENTFIELD.documentid
ORDER BY modificationdate DESC;
Wie bekomme ich jetzt den JOIN da rein? Die o.g. Abfrage wirft etwa folgendes aus:
Name | itemid | modificationdate | name | cdata |
Titel 1 | 111 | 2012-07-02 10:00:00 | Frage | Inhalt der Frage |
Titel 1 | 111 | 2012-07-02 10:00:00 | Antwort | Inhalt der Antwort |
Titel 1 | 111 | 2012-07-02 10:00:00 | Screenshot | NULL |
Titel 1 | 111 | 2012-07-02 10:00:00 | etc | NULL |
Titel 2 | 222 | 2012-07-01 10:00:00 | Frage | Inhalt der Frage |
Ich habe dann mal hiermit experimentiert:
SQL:
SELECT DISTINCT DOCUMENTFIELD.name AS DF_Frage,
DOCUMENTFIELD.cdata AS DF_data_Frage,
DOCUMENTFIELD.documentid
FROM kmmaster3.DOCUMENTFIELD
JOIN kmmaster3.DOCUMENTFIELD DF ON DOCUMENTFIELD.documentid = DF.documentid
WHERE DOCUMENTFIELD.name = "FAQ-Frage"
OR DOCUMENTFIELD.name = "Antwort";
Letztlich kam das gleiche Resultset wie ohne die JOIN-Zeile.
Was mache ich falsch? Habe ich irgendwo einen Denkfehler?
Zuletzt bearbeitet von einem Moderator: