2013-09-19 2 views
0

У меня есть следующие таблицы:Как выбрать все записи, но заказать столбец соответствующей таблицы?

  1. ключевые слова,
  2. keywords_clients,
  3. keywords_groups,
  4. клиентов,
  5. группы

Таблицы 2 и 3 для многих ко многим отношения между ключевыми словами и группами, ключевыми словами и клиентами.

Я хочу получить все записи из таблицы ключевых слов. Однако я хочу упорядочить ключевые слова таким образом, чтобы те, которые принадлежат к определенной группе, появляются первыми. Как мне это достичь?

Надеюсь, это имеет смысл и искренне ценит любую помощь.

ответ

2

Вам нужно присоединиться ко всем таблицам, которые вы хотите использовать, но вы должны ограничить свой список выбора только теми столбцами, которые важны для вас. Не обязательно выбирать все столбцы из всех таблиц, хотя это то, что дает вам SELECT *.

Что-то вроде этого:

SELECT k.* 
    FROM keywords k 
    JOIN keyword_groups kg ON k.k_id=kg.k_id 
    JOIN groups g ON kg.g_id=g.g_id 
ORDER BY CASE WHEN g.class='Top' THEN 0 ELSE 1 END, g.name, k.name; 

Если вам нужно увидеть только конкретную группу, просто добавьте пункт WHERE для него.

+0

Что означает g.class = 'Top'? – Sid

+1

@Sid, это всего лишь предположение о возможном значении в возможном столбце. Пожалуйста, поделитесь своими данными схемы для более подходящего запроса. – vyegorov

Смежные вопросы