2016-02-25 3 views
2

У меня есть запрос с несколькими таблицами, который извлекает значения «URL» (или псевдоним «Taxon») для каждой таблицы. Он также создает ценности для «MySiteID» и «MySection». Вот как это выглядит.Многозадачный запрос с несогласованными полями

SELECT URL, 'GW' AS MySiteID, 'Topics' AS MySection FROM $DBWorld.gw_topics 
UNION ALL 
SELECT Taxon AS URL, 'GZ' AS MySiteID, 'Life' AS MySection FROM $DBLife.gz_life_kingclass 

Последняя строка выглядит следующим образом:

SELECT TopicURL AS URL, 'GS' AS MySiteID, 'Topics' AS MySection FROM $DBSymbols.gs_top_ref 
) AS Combined 
WHERE Combined.URL LIKE :MyURL 

Я хотел бы изменить последнюю строку так говорит, где Combined.URL LIKE: MyURL И G1 = 1

В другими словами, страница не будет отображаться, если значение «URL» не соответствует URL страницы, а поле G1 имеет значение 1.

Проблема в том, что человек y моих таблиц не имеет поля G1. Я хочу отображать все в этих конкретных таблицах.

Есть ли способ изменить мой запрос, чтобы 1) строки из таблицы с полем G1 не отображались, если значение для G1 равно 1 и 2) строки из таблиц, у которых нет поля названный G1 также отображается?

ответ

3

в вашем профсоюзе:

  1. на столах, которые имеют G1 столбец, добавьте его в отборного заявления
  2. на столах, которые не делают, просто добавьте 1 as G1

Теперь вы есть столбец G1 на всех, как вы хотели - на таблицах, которые он приходит из таблицы, вы получите значение из таблицы. на таблицах нет - это будет 1 на всех строках, поэтому он всегда выбирается так, как вы хотели.

После этого вы можете добавить свой внешний комментарий, если заявление AND G1 = 1

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