@alexsemen94
начинающий прогаммист

Как объединить две таблицы?

В общем проблема такая,у меня есть две таблицы, допустим таблица1, таблица2, во второй таблице кроме всех данных есть столбец со статусами, которые могут принимать два значения 1 или 2, я соединяю эти таблицы при условии чтобы записи со статусом 1 не попадали, то бишь where status <> 1, но эта выборка промежуточная, т.е эта выборка будет участвовать в других решениях, где нужны id со статусом 1, у меня такой вопрос, возможно ли сделать так, чтобы при объединении этих таблиц с where <> 1, но чтобы был еще одни столбец где будут хранится те id с where status = 1?
  • Вопрос задан
  • 620 просмотров
Пригласить эксперта
Ответы на вопрос 4
romy4
@romy4
Exception handler
Задача противоречит сама себе. Либо делайте две выборки, либо там где уже надо делайте проверку на status
Ответ написан
@mletov
Создайте вьюху, в которой обе таблицы объединены без ограничений по статусу, а потом обращайтесь к ней в других запросах. Где надо - фильтруйте, где не надо - не фильтруйте.
Ответ написан
Комментировать
@nozzy
Symfony, Laravel, SQL
with 
t1 as
(
select .... from table1 where .....
),
t2 as
(
select .... from table2 where .....
)

select ...... 
from t1
join t2 ....
Ответ написан
Комментировать
svd71
@svd71
Можно. Но нужно сформировать псевдостолбец.
Nozzi уже один синтаксис задал, можно использовать его. но новые фишки не всегда клнятся под старые базы. Да и на том, на чем набираю текст много писать не удобно. Поэтому попробую объяснить по старинному синтаксису
Select cast(0 as int) pseudoid, id, <все другие нужные столбцы> from t1 where status <> 1
Union
Select cast(0 as int) pseudoid, id, <все другие нужные столбцы> from t2 where status <> 1
Union

-- теперь самый фокус
Select  id, 0, <все другие нужные столбцы> from t1 where status = 1


На что обращать внимание:
1. В объединении имена и типы столбцов задаются их первого селекта.
2. Количество столбцов и их типы всех селектов должны совпадать. Иначе нужно делать кастинг.
3. Сортировка задается в последнем селекте и применяется для всего объединения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы