Aus 3 mach 1 aber wie ?

Hallo Leute,

ich habe ein Problem mit einer SQL - Anweisung im MS Access. Ich habe
die Query zum laufen gebracht, allerdings in drei Querys aufgeteilt :

Query1:
SELECT tCore_ElementDef.pAttribute, tCore_ElementDef.aElementID,
tCore_ElementDef.cControlName, tCore_ElementDef.pForm,
tCore_TextDef.pElement, tCore_TextDef.cShowText,
tCore_TextDef.pInterface
FROM tCore_ElementDef INNER JOIN tCore_TextDef ON
tCore_ElementDef.aElementID = tCore_TextDef.pElement
WHERE (((tCore_ElementDef.aElementID)=[tCore_TextDef].[pElement]) AND
((tCore_ElementDef.pForm)=1967891450) AND
((tCore_TextDef.pInterface)=976094547))
ORDER BY tCore_TextDef.cShowText;

Query2:
SELECT tSiteData.pSite, tSiteData.mData, tSiteData.bObsolete,
tSiteData.pField
FROM tSiteData
WHERE (((tSiteData.pSite)=1058337280) AND
((tSiteData.bObsolete)=False));

Query3:
SELECT WebQuery_SiteInfo2.pSite, WebQuery_SiteInfo1.pAttribute,
WebQuery_SiteInfo2.pField, WebQuery_SiteInfo1.cControlName,
WebQuery_SiteInfo2.mData, WebQuery_SiteInfo1.cShowText
FROM WebQuery_SiteInfo2 RIGHT JOIN WebQuery_SiteInfo1 ON
WebQuery_SiteInfo2.pField = WebQuery_SiteInfo1.pAttribute
ORDER BY WebQuery_SiteInfo2.pSite;

So, dass funktioniert also, das Problem ist folgendes, in Query2 sage
ich tSiteData.pSite=1058337280, dieser Wert soll aber des öfteren
geändert werden und da ich von einem Skript auf die Datenbank
zugreife (unerheblich, es grht nur um das SQL-Problem), müssen diese
drei Querys in eine Abfrage gepackt werden, geht das ? Ich habe es
mal probiert, aber diese Abfrage funktioniert so nicht :

SELECT tCore_ElementDef.cControlName, tSiteData.mData,
tCore_TextDef.cShowText FROM (

SELECT tSiteData.pSite, tSiteData.mData, tSiteData.bObsolete,
tSiteData.pField FROM tSiteData WHERE tSiteData.pSite=1058337280 AND
tSiteData.bObsolete=False

) RIGHT JOIN (

SELECT tCore_ElementDef.pAttribute, tCore_ElementDef.aElementID,
tCore_ElementDef.cControlName, tCore_ElementDef.pForm,
tCore_TextDef.pElement, tCore_TextDef.cShowText,
tCore_TextDef.pInterface FROM tCore_ElementDef, tCore_TextDef WHERE
tCore_ElementDef.aElementID=tCore_TextDef.pElement AND
tCore_ElementDef.pForm=1967891450 AND
tCore_TextDef.pInterface=976094547 ORDER BY tCore_TextDef.cShowText

) ON tSiteData.pField = tCore_ElementDef.pAttribute ORDER BY
tSiteData.pSite

Hast jemand eine Ahnung, warum das nicht funktioniert (Fehlermeldung:
Sytax error in Join operation) , wo der Fehler ist und zufällig auch
noch eine Lösung zur Hand ? Wäre wirklich klasse, wenn mir jemand helfen könnte !

Vielen Dank im Voraus für die Mühen und die Hilfe. Wünsche noch einen schönen Tag.

Grüße
Thomas

Hallo Thomas,

du mußt die SELECT-Anweisung noch über AS einer „Variablen“ zuweisen. In etwa so:

SELECT * FROM tab1
LEFT JOIN (SELECT * from tab2) AS tabtemp
ON tab1.id = tabtemp.id

Viele Grüße,
Alkor

SELECT tCore_ElementDef.cControlName, tSiteData.mData,
tCore_TextDef.cShowText FROM (

SELECT tSiteData.pSite, tSiteData.mData, tSiteData.bObsolete,
tSiteData.pField FROM tSiteData WHERE
tSiteData.pSite=1058337280 AND
tSiteData.bObsolete=False

) RIGHT JOIN (

SELECT tCore_ElementDef.pAttribute,
tCore_ElementDef.aElementID,
tCore_ElementDef.cControlName, tCore_ElementDef.pForm,
tCore_TextDef.pElement, tCore_TextDef.cShowText,
tCore_TextDef.pInterface FROM tCore_ElementDef, tCore_TextDef
WHERE
tCore_ElementDef.aElementID=tCore_TextDef.pElement AND
tCore_ElementDef.pForm=1967891450 AND
tCore_TextDef.pInterface=976094547 ORDER BY
tCore_TextDef.cShowText

) ON tSiteData.pField = tCore_ElementDef.pAttribute ORDER BY
tSiteData.pSite