Union и пустые записи

X11
Дата: 09.07.2012 12:05:12
Приветствую.

Есть запрос с объединением UNION трех таблиц. Проблема в том, что если в первых двух таблицах результат - пустота, а в последней есть запись(и), то результирующий набор данных (НД) попадает пустая запись.

Вот запрос:
+
select
  p.id_apart as ID,
  a.rooms_q,
  a.id_type,
  t.name as type_name,
  a.id_region,
  r.name as region_name,
  a.lcd,
  a.id_infosource,
  i.name as infosource_name,
  a.id_ex,
  y.name as exclusive,
  a.deleted

from phones p

left join apart a on (a.id = p.id_apart)
left join types t on (t.id = a.id_type)
left join regions r on (r.id = a.id_region)
left join infosource i on (i.id = a.id_infosource)
left join infosource y on (y.id = a.id_ex)

where (p.tel = :tel or  p.tel = :tel2)

UNION

select
  p.id_off,
  o.rooms_q,
  o.id_type,
  t.name as type_name,
  o.id_region,
  r.name as region_name,
  o.lcd,
  o.id_infosource,
  i.name as infosource_name,
  o.id_ex,
  y.name as exclusive,
  o.deleted

from phones p

left join offices o on (o.id = p.id_off)
left join types t on (t.id = o.id_type)
left join regions r on (r.id = o.id_region)
left join infosource i on (i.id = o.id_infosource)
left join infosource y on (y.id = o.id_ex)

where (p.tel = :tel or  p.tel = :tel2)

UNION

select
  m.id,
  null,
  m.id_type,
  t.name as type_name,
  null,
  'ПОСРЕДНИК',
  null,
  null,
  null,
  null,
  null,
  m.deleted

from phones p

left join mediators m on (m.id = p.id_mediator)
left join types t on (t.id = m.id_type)

where (p.tel = :tel or  p.tel = :tel2)


вот результат:
Картинка с другого сайта.

Можно ли как-то добиться того, чтобы пустых записей в результирующем НД не было? Если да, то как? Спасибо.
X11
Дата: 09.07.2012 12:05:51
Забыл добавить. Firebird 2.5.1.
Dimitry Sibiryakov
Дата: 09.07.2012 12:13:27

Удали пустые записи из первых двух таблиц.

Posted via ActualForum NNTP Server 1.5

X11
Дата: 09.07.2012 12:34:20
Наверное я Вас не понял. Что значит пустых?

Ни в таблице apart, ни в таблице offices, ни в таблице phones нет пустых записей.
Dimitry Sibiryakov
Дата: 09.07.2012 12:35:20

X11
Ни в таблице apart, ни в таблице offices, ни в таблице phones нет пустых
записей.

"Ты их не видишь, а они есть..." почти (с)

Posted via ActualForum NNTP Server 1.5

m7m
Дата: 09.07.2012 13:03:26
X11
Приветствую.

Есть запрос с объединением UNION трех таблиц. Проблема в том, что если в первых двух таблицах результат - пустота, а в последней есть запись(и), то результирующий набор данных (НД) попадает пустая запись.
...

Можно ли как-то добиться того, чтобы пустых записей в результирующем НД не было? Если да, то как? Спасибо.


Ну а добавить в where дополнительные условия, дабы "пустые записи" отсеивались, чем не устраивает???
X11
Дата: 09.07.2012 17:52:52
Если выполнять запросы по отдельности, то результаты пустые, нет записей.
Dimitry Sibiryakov
Дата: 09.07.2012 18:08:34

X11
Если выполнять запросы по отдельности, то результаты пустые, нет записей.

А если выполнить запросы с count(*)?

Posted via ActualForum NNTP Server 1.5

WildSery
Дата: 09.07.2012 18:27:24
Dimitry Sibiryakov,

В военное время count(*) может достигать -1
Dzirt
Дата: 09.07.2012 18:32:05
WildSery, но не Null-же... :)