У меня есть две таблицы:SQL: объединение двух SQL запросов
T_CHAMBRE_CHB (CHB_NUM);
T_PLANNING_PLN (PLN_JOUR ,CHB_NUM, PLN_LIBRE);
у меня есть эти значения в нем:
T_CHAMBRE_CHB:
1
2
3
4
T_PLANNIG_CHB:
1 2000-01-12 1 False
2 2000-01-12 2 False
3 2000-01-13 1 False
4 2000-01-13 2 False
5 2000-01-13 4 True
Я хотел бы получить оккупацию комнат 13 Janvier 2000 для получения информации, если помещение не в планировании (здесь 3) Что это значит, что это бесплатно, так что результат должен быть:
CHB_NUM PLN_LIBRE
----------- ---------
1 False
2 False
3 True
4 True
У меня есть этот запрос:
SELECT DISTINCT TCC.CHB_NUM, TPP.PLN_LIBRE
FROM T_CHAMBRE_CHB AS TCC,
T_PLANNING_PLN AS TPP
WHERE TCC.CHB_NUM=TPP.CHB_NUM AND TPP.PLN_JOUR = '2000-01-13'
UNION
SELECT DISTINCT TCC.CHB_NUM, TPP.PLN_LIBRE
FROM T_CHAMBRE_CHB AS TCC,
T_PLANNING_PLN AS TPP
WHERE TCC.CHB_NUM NOT IN (SELECT DISTINCT (TPP2.CHB_NUM) FROM T_PLANNING_PLN AS TPP2);
Я получаю этот результат:
1 1 False
2 2 False
3 3 False
4 3 True
5 4 True
Я не знаю, почему я получаю третью строчку (3 ----> False)
Я думаю, шо я uld использует OUTER UNION, но SQL Server не любит синтаксис.
Нет необходимости 'ВЫБРАТЬ DISTINCT', когда 'UNION', так как UNION будет удалять повторяющиеся строки. Нет необходимости в 'SELECT DISTINCT', когда' [NOT] IN' (sub-query.) – jarlh