Сценарий:
У меня есть три таблицы.Одна таблица для поставщика , другая для категории , а последняя - таблица индекса .
Каждый поставщик может выбрать несколько категорий, которые будутзарегистрирован в таблице indexer.
Поле parent_id на indexer_table предназначено для регистрации идентификатора поставщика и child_id - это регистрация идентификатора категории.Есть еще одно поле с именем is_main , чтобы проверить, является ли это основной категорией поставщика.
Я работаю с этим запросом и работает очень хорошо.
SELECT
t1.id, t1.name, t1.company, t1.description,
t2.categories, t2.categories_id
FROM supplier_table t1
LEFT JOIN (
SELECT
tin2.parent_id, tin2.child_id, tin2.is_main,
GROUP_CONCAT(tin1.id) AS categories_id,
GROUP_CONCAT(tin1.title) AS categories FROM
(SELECT id, title FROM table_categories WHERE status = 1) tin1
JOIN table_indexer tin2 ON tin2.child_id = tin1.id GROUP BY tin2.parent_id
) t2 ON t1.id = t2.parent_id
WHERE t1.id IN (:id)
По сути, этот запрос возвращает всю необходимую мне информацию от поставщика.Идентификаторы и имена категорий: объединены на категории и Categories_id поля соответственно, и это сгруппирован по идентификатору поставщика (parent_id), давая мне такой вывод:
Supplier Object
(
[id] => 1
[name] => Supplier Name
[company] => SUpplier Company Name
[description] => Supplier Description Text.
[categories] => Category Example 1,Main Category,Category Example 2
[categories_id] => 6,9,5
)
Мне нужно ЗАКАЗАТЬ is_main DESC содержимое GROUP_CONCAT .Таким образом, я бы знал, что первое вхождение - это основная категория поставщика.
Supplier Object
(
[id] => 1
[name] => Supplier Name
[company] => SUpplier Company Name
[description] => Supplier Description Text.
[categories] => Main Category,Category Example 1,Category Example 2
[categories_id] => 9,6,5
)
Я пытался разместить ORDER BY после GROUP BY и в некоторых других местах, но это не сработало.Спасибо за любую помощь, спасибо.