Выборка из 2 баз данных

Dima85

Новичок
Помогите сформулировать запрос.
Есть 2 базы данных.
Первая: users
`UserID`, `Surname`, `Phone`, `Text`
Вторая: concact
`ContactID`, `Surname`, `Phone`, `Text`

Нужно вывести всех с базы users (показать `Surname`) и всех с базы concact (показать `Surname`), но если в базе concact таблица `Phone` совпадает с `Phone` из базы `users`. Нужно вывести и показать `Surname` только из базы users.

Я знаю как вывести данные из 2 баз. Но как сделать если в базе concact таблица `Phone` совпадает с `Phone` из базы `users`. вывести и показать `Surname` только из базы users?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Dima85, не из двух баз, а таблиц. Надо написать условие IF()
 

ksnk

прохожий
c0dex, одним if не обойтись, imho. Вероятно, эффективнее делать временную таблицу.
Слить туда users, обновить surname у записей с тем-же Phone из таблицы concact, потом добавить туда все уникальные surname из оставшихся из concact.
3 запроса... Можно ли сделать проще?
 

Dima85

Новичок
Сейчас я делаю так:
Код:
select u.Surname
from users u
left join contact c on c.phone = u.phone
Но этот пример не выводит записи с таблицы concact которые не совпадают с `Phone`.
Задача вывести все записи из таблицы users и все записи с таблицы concact, но если concact.phone = users.phone выводить эту запись с concact не нужно.
 

ksnk

прохожий
Код:
select IFNULL(c.Surname,u.Surname)
from users u
left join contact c on c.phone = u.phone
union
select c.Surname
from contact c
where not exists(select * from users as u where u.phone=c.phone)
http://sqlfiddle.com/#!2/2d1df6/5
Можно уложится в меньше 3-х select'ов?
 
Сверху