necesita sintaxis para múltiples uniones con consultas incrustadas
Frecuentes
Visto 43 veces
0
M$ Access 2010
I have two tables CONTACT and AAEmail_X
Esto funciona muy bien
SELECT aa.[Contact ID], mm.Email AS [Personal Email]
FROM [CONTACT] AS aa
LEFT JOIN (
SELECT bb.[ClientID], bb.Email
FROM AAEmail_X AS bb
WHERE bb.Type = "Personal Email") AS mm
ON aa.[Contact ID] = mm.[ClientID];
note the embedded query contained within the parentheses.
Now I'd like to extend it to contain another embedded query
SELECT aa.[Contact ID], mm.Email AS [Personal Email], nn.Email AS [Business Email]
FROM ( [CONTACT] AS aa
LEFT JOIN (
SELECT bb.[ClientID], bb.Email
FROM AAEmail_X AS bb
WHERE bb.Type = "Personal Email") AS mm
ON aa.[Contact ID] = mm.[ClientID] )
LEFT JOIN (
SELECT cc.[ClientID], cc.Email
FROM AAEmail_X AS cc
WHERE cc.Type = "Business Email") AS nn
ON aa.[Contact ID] = nn.[ClientID];
note the first join is enclosed within parantheses due to Access' quirky SQL implementation
This fails with Access prompting for a value to be manually entered for "Query2.ClientID"
So I think I'm tangled up in parentheses hell. Can anyone spot what's wrong?
TIA,
Steve aún aprendiendo
3 Respuestas
0
Try this, you started a bracket after the first FROM
SELECT aa.[Contact ID], mm.Email AS [Personal Email], nn.Email AS [Business Email]
FROM CONTACT AS aa
LEFT JOIN
(
SELECT bb.[ClientID], bb.Email
FROM AAEmail_X AS bb
WHERE bb.Type = 'Personal Email'
) AS mm ON aa.[Contact ID] = mm.[ClientID]
LEFT JOIN
(
SELECT cc.[ClientID], cc.Email
FROM AAEmail_X AS cc
WHERE cc.Type = 'Business Email'
) AS nn ON aa.[Contact ID] = nn.[ClientID];
respondido 27 nov., 13:07
0
I think your parentheses are the problem... Try
SELECT aa.[Contact ID], mm.Email AS [Personal Email], nn.Email AS [Business Email]
FROM ( [CONTACT] AS aa
LEFT JOIN (
SELECT bb.[ClientID], bb.Email
FROM AAEmail_X AS bb
WHERE bb.Type = "Personal Email") AS mm
ON aa.[Contact ID] = mm.[ClientID]
LEFT JOIN (
SELECT cc.[ClientID], cc.Email
FROM AAEmail_X AS cc
WHERE cc.Type = "Business Email") AS nn
ON aa.[Contact ID] = nn.[ClientID]
);
or
SELECT aa.[Contact ID], mm.Email AS [Personal Email], nn.Email AS [Business Email]
FROM (( [CONTACT] AS aa
LEFT JOIN (
SELECT bb.[ClientID], bb.Email
FROM AAEmail_X AS bb
WHERE bb.Type = "Personal Email") AS mm
ON aa.[Contact ID] = mm.[ClientID])
LEFT JOIN (
SELECT cc.[ClientID], cc.Email
FROM AAEmail_X AS cc
WHERE cc.Type = "Business Email") AS nn
ON aa.[Contact ID] = nn.[ClientID]
);
respondido 27 nov., 13:08
0
This worked. Must have had some subtle misspelling or syntactical error.
SELECT aa.[Contact ID], mm.Email AS [Personal Email], nn.Email AS [Business Email]
FROM ( [CONTACT] AS aa
LEFT JOIN (SELECT bb.[ClientID], bb.Email FROM AAEmail_X AS bb WHERE bb.Type = "Personal Email") AS mm
ON aa.[Contact ID] = mm.[ClientID] )
LEFT JOIN (SELECT cc.[ClientID], cc.Email FROM AAEmail_X AS cc WHERE cc.Type = "Business Email") AS nn
ON aa.[Contact ID] = nn.[ClientID];
Thanks to all who answered! Stackoverflow rocks!
Gracias de nuevo,
CASO CERRADO
Steve aún aprendiendo
respondido 27 nov., 13:20
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sql ms-access or haz tu propia pregunta.