Я хочу узнать, какие элементы выбраны и все, что не выбрано, становится 0
Это полезно для списка (или раскрывающегося списка), все, что выделено, означает, что оно было добавлено (LEFT JOIN)
Я не смог заставить работать SQL:
SELECT StoreID, ft.id, name, count(1) as Selected
FROM `store_food_type` AS sft
LEFT JOIN food_type AS ft
ON ft.id = sft.food_type_id
WHERE StoreID = 17633
GROUP BY ft.id
UNION
SELECT 0, ft.id, name, 0 as Selected FROM food_type AS ft
Редактировать: Ошибка не вызвала, он показывает результат, но name
дублируются, чего я не хочу.
Это выглядит так:
+------------+------+----------+----------+
| StoreID | id | name | Selected |
+------------+------+----------+----------+
| 17633 | 1 | Indian | 1 |
| 17633 | 8 | American | 1 |
| 0 | 1 | Indian | 0 |
| 0 | 2 | English | 0 |
| 0 | 25 | Kurdish | 0 |
| 0 | 5 | Chinese | 0 |
| 0 | 7 | Turkish | 0 |
| 0 | 8 | American | 0 |
+------------+------+----------+----------+
Я хочу, чтобы результат выглядел так:
+------------+------+----------+----------+
| StoreID | id | name | Selected |
+------------+------+----------+----------+
| 17633 | 1 | Indian | 1 |
| 17633 | 8 | American | 1 |
| 0 | 25 | Kurdish | 0 |
| 0 | 5 | Chinese | 0 |
| 0 | 7 | Turkish | 0 |
| 0 | 8 | American | 0 |
+------------+------+----------+----------+