SQL-запрос зависимый столбец - PullRequest
0 голосов
/ 04 февраля 2011

У меня есть две таблицы

один - это ключевые слова [id | ключевое слово | счет] k и один это templateKeywordLink [templateId | keywordId] tkl

Что я хочу сделать, так это получить набор результатов со всеми ключевыми словами из таблицы ключевых слов (где account = 1)

Я также хочу добавить еще один столбец с именем selected.

если k.id in (select templateId from templateKeywordLink), то выбранный должен содержать «выбранный». иначе он должен быть нулевым

Мне интересно, какой оптимальный запрос для этого?

1 Ответ

0 голосов
/ 04 февраля 2011

Есть несколько способов сделать это. Один из способов - выполнить левое соединение с запросом, который возвращает интересующие идентификаторы.

Обратите внимание, что большинство баз данных имеют более компактные способы сделать то, что я сделал с помощью оператора CASE, но CASE переносим на любую реляционную базу данных, которую вы можете захотеть использовать.

SELECT k.*
  , CASE
      WHEN tkl.id IS NULL
      THEN NULL
      ELSE 'selected'
    END as selected
FROM keywords k
  LEFT JOIN (
      SELECT DISTINCT templateId
      FROM templateKeywordLink
    ) as tkl
    ON k.id = tkl.templateId
...