У меня есть функциональный запрос, использующий несколько операторов внутреннего соединения. Он отлично сочетает в себе таблицы событий, мест и категорий. У меня также есть таблица «Избранное», которую я планирую включить, но у меня возникают проблемы с логикой.
Моя таблица выглядит так:
favorites:
ID accountID eventID
1 2 14
2 2 16
3 3 18
4 3 14
...
ипродолжается. Идентификатор - это уникальный идентификатор (здесь не имеет значения), accountID - это пользователь, с которым он связан, а eventID - это событие, которое было добавлено в избранное.
По сути, я хочу знать, что для каждого события Iприсутствует в моем коде, был ли он одобрен.
Это мой код прямо сейчас, который работает, но еще не содержит информацию о избранном.
SELECT
e.ID,
e.Title,
v.Name as venue,
v.Address,
v.Email,
GROUP_CONCAT(c.Name SEPARATOR ' · ') as Categories
FROM
Events e
INNER JOIN Venues v ON e.VenueID = v.ID
INNER JOIN EventCategories ec ON ec.EventID = e.ID
INNER JOIN Categories c ON c.ID = ec.CategoryID
WHERE
e.ID = ".$_GET['e']."
GROUP BY
e.Title, e.Start, v.Name
ORDER BY
e.Start ASC
Что я пробовалбыл код, подобный
INNER JOIN favorites f ON f.eventID = e.ID
и
INNER JOIN favorites f ON e.ID = f.eventID
, но это просто заставляет все ломаться.
Я играл с различными вариантами этого, но не имел большого успеха,Я новичок в написании запросов, и я бы сказал, что это сложный вопрос.
Я получаю accountID из переменной сеанса (если человек вошел в систему).
Что бы янапример, получить результат типа «если избранное существует, затем запустить этот сценарий» или «вернуть 1, если предпочтение, 0, если нет», чтобы я мог основывать свой вывод на том, присутствует ли это событие в этом списке. (Я поставлю значок сердца рядом с теми, которые предпочитаются.)
Любая помощь будет признательна!