Como posso usar uma variável de uma subconsulta?
Pergunta
Eu tenho esta consulta:
(SELECT e.IdEvent,e.EventName,e.EventSubtitle,e.EventDescription,l.LocationName,e.EventVenue,EventStartDate,e.EventEndDate,e.EventHost,c.CategoryName,l.LocationCity,l.LocationState,e.isTBA,
(SELECT s.status FROM jos_rsevents_subscriptions s WHERE s.IdUser = 72 AND s.IdEvent = e.IdEvent LIMIT 1) as status
FROM jos_rsevents_events e
LEFT JOIN jos_rsevents_locations l ON e.IdLocation=l.IdLocation
LEFT JOIN jos_rsevents_categories c ON e.IdCategory=c.IdCategory
WHERE 1=1 AND status < 3 ) ORDER BY EventStartDate
Mas eu recebo o erro. "Coluna desconhecida 'status' em 'onde cláusula'
Como posso corrigir isso?
Solução
Tente usar HAVING
vez, como que é aplicado após a sua subconsulta é executado, por exemplo:.
(SELECT e.IdEvent,e.EventName,e.EventSubtitle,e.EventDescription,l.LocationName,e.EventVenue,EventStartDate,e.EventEndDate,e.EventHost,c.CategoryName,l.LocationCity,l.LocationState,e.isTBA,
(SELECT s.status FROM jos_rsevents_subscriptions s WHERE s.IdUser = 72 AND s.IdEvent = e.IdEvent LIMIT 1) as status
FROM jos_rsevents_events e
LEFT JOIN jos_rsevents_locations l ON e.IdLocation=l.IdLocation
LEFT JOIN jos_rsevents_categories c ON e.IdCategory=c.IdCategory
HAVING status < 3 ) ORDER BY EventStartDate
Outras dicas
Se a tabela jos_rsevents_subscriptions
tem uma chave primária, você também pode fazer isso:
SELECT e.IdEvent, e.EventName, e.EventSubtitle, e.EventDescription,
l.LocationName, e.EventVenue, EventStartDate, e.EventEndDate,
e.EventHost, c.CategoryName, l.LocationCity, l.LocationState, e.isTBA,
s.status
FROM jos_rsevents_events e
LEFT JOIN jos_rsevents_locations l
ON e.IdLocation=l.IdLocation
LEFT JOIN jos_rsevents_categories c
ON e.IdCategory=c.IdCategory
Left Join jos_rsevents_subscriptions s
On s.PK = (Select Max(PK) From jos_rsevents_subscriptions
Where IdUser = 72
AND IdEvent = e.IdEvent)
WHERE 1=1 AND status < 3
ORDER BY EventStartDate
P.S. Porque a 1 = 1 ??
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow