2011-02-04 5 views
0

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

one is keywords [id | ключевое слово | account] k и один шаблонKeywordLink [templateId | KeywordId] TKL

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

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

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

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

ответ

0

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

Обратите внимание, что большинство баз данных имеют более компактные способы делать то, что я делал с оператором 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