Wie kann ich eine Variable aus einer Unterabfrage verwenden?
Frage
Ich habe diese Abfrage:
(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
Aber ich habe den Fehler. „Unbekannte Spalte 'Status' in 'where clause'
Wie kann ich dieses Problem beheben?
Lösung
Versuchen HAVING
stattdessen verwenden, wie das aufgebracht wird, nachdem die Unterabfrage ausgeführt wird, z.
(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
Andere Tipps
Wenn Tabelle jos_rsevents_subscriptions
einen Primärschlüssel verfügt, können Sie auch Folgendes tun:
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. Warum die 1 = 1 ??
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow