Ну, я думаю, вы не правы в схеме базы данных.Это типичное отношение 1 к n, поэтому обычно вы должны иметь что-то вроде:
[Таблица категорий]
- categoryId
- name
- ... (другие поля)
[Content Table] (Таблица, содержащая данные для классификации)
- contentId
- name
- ... (другие поля)
И у вас есть таблица, чтобы объединить их и разрешить множественные связи.
[Content_Belongs_To_Category Table]
Итак, теперь вы выбираете таблицу категорий, чтобы получить список, необходимый для раскрывающегося списка, и для каждой категории контентпринадлежит вам добавить строку в таблицу отношений.
Наконец, вы можете объединить [Content Table] с [Table Table] и [Content_Belongs_To_Category Table], чтобы получить список категорий, к которым принадлежит элемент (как массив, или вы можете использовать GROUP_CONCAT, чтобы получить их в виде запятойразделенная строка)
Возможно, в моем ответе слишком много неизвестных терминов, но это должно помочь вам разобраться (правильно:)).
Редактировать: Примеры операторов SQL
SELECT * FROM Categories
- Получить категории, к которым принадлежит контент
SELECT *FROM Content_Belongs_To_Category cbtc INNER JOIN Категории c ON cbtc.categoryId = c.categoryId ГДЕ cbtc.contentId =
- Получить содержимое и категории в виде строки
ВЫБРАТЬ co.contentId,min (co.name) в качестве имени, group_concat (c.name) в качестве категории из контента co ВНЕШНЕЕ ВНЕШНЕЕ СОЕДИНЕНИЕ Content_Belongs_To_Category cbtc ON cbtc.contentId = co.contentId ВЛЕВО НАРУЖНОЕ СОЕДИНЕНИЕ Категории cON cbtc.categoryId = c.categoryId GROUP BY co.contentId