Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2013, 12:05   #1
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию ОБЪЕДИНЕНИЕ ДВУХ ТАБЛИЦ

Нужно объединить два запроса с разным количеством записей.
Объединить так чтобы столбцы объеденились.
Структура
Код:
t1
install_id   napr  mm  kod
     9         12     0    10
     9         12    20   210
     9         12    60   420

t2
install_id   napr  mm  kod
     9         12     0    10
     9         12    20   210
t1 и t2 хранят данные с разных датчиков!
Нужно получить :

Код:
 napr1      mm1   kod1   napr2   mm2   kod2 
  12           0        10      12       0       10
  12          20       210     12      20     210
  12          60       420    null     null    null
Mysql не признает Full Join.
Пробовал писал следующим образом, но почему то запрос выдает всевозможные комбинации.

Код:
SELECT 
a.napr as napr1,a.mm as mm1, a.kod as kod1,b.napr as napr2,b.mm as mm2,b.kod as kod2
FROM
t1 as a  LEFT OUTER t2 as b ON a.install_id=b.install_id
WHERE a.install_id=10

UNION  ALL

SELECT a.napr as napr1,a.mm as mm1, a.kod as kod1,b.napr as napr2,b.mm as mm2,b.kod as kod2
FROM
t1 as a  RIGHT OUTER JOIN t2 as b ON a.install_id=b.install_id
WHERE a.install_id IS NULL

Как поступить чтоб объединить таблицы???

Последний раз редактировалось BarakudaX777; 03.03.2013 в 12:13.
BarakudaX777 вне форума Ответить с цитированием
Старый 03.03.2013, 12:15   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Убрать ALL из UNION ALL
И посмотреть например http://www.sql-tutorial.ru/ru/book_f...and_mysql.html
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.03.2013, 12:30   #3
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Хоть убирай ALL хоть не убирай одно и то же. я уже пробовал и так и так.
BarakudaX777 вне форума Ответить с цитированием
Старый 03.03.2013, 12:57   #4
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Привел запрос к такому виду
Код:
SELECT a.*,b.*
FROM
plomb1_data as a  LEFT JOIN plomb2_data as b ON a.install_id=b.install_id
WHERE a.install_id=10

UNION ALL

SELECT a.*,b.*
FROM
plomb1_data as a  RIGHT JOIN plomb2_data as b ON a.install_id=b.install_id
WHERE a.install_id is NULL
Безрезультатно. 6 записей вместо 3х
BarakudaX777 вне форума Ответить с цитированием
Старый 03.03.2013, 13:18   #5
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Ребят. Очень нужно. не понимаю как избавится от комбинаций
BarakudaX777 вне форума Ответить с цитированием
Старый 03.03.2013, 13:55   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ON a.install_id=b.install_id AND a.napr=b.napr AND a.mm=b.mm
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.03.2013, 14:10   #7
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
ON a.install_id=b.install_id AND a.napr=b.napr AND a.mm=b.mm
Огромное тебе спасибище! Действительно стало 3 записи! Вот только null стоят по середине, а желательно в конце
BarakudaX777 вне форума Ответить с цитированием
Старый 03.03.2013, 14:14   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ORDER BY в конце добавь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.03.2013, 14:20   #9
BarakudaX777
Пользователь
 
Регистрация: 13.06.2010
Сообщений: 53
По умолчанию

Все исправил. Именовал столбцы и тогда получилось. Спасибо большое. сортировал так
ORDER BY isnull(napr2)

Последний раз редактировалось BarakudaX777; 03.03.2013 в 14:28.
BarakudaX777 вне форума Ответить с цитированием
Старый 03.03.2013, 14:29   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

ORDER BY 2,4 пашет?
2,4 - порядковые номера столбцов в SELECT
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объединение записей из двух таблиц DIMASIKXXX32 БД в Delphi 5 25.02.2013 23:40
Объединение двух таблиц исключая дубли AVGRIN Microsoft Office Excel 3 13.01.2013 21:52
Выборка и объединение двух таблиц. Maikroft Microsoft Office Access 4 25.01.2012 23:46
Объединение двух таблиц go2net Microsoft Office Excel 4 12.08.2010 00:11
Объединение двух таблиц jekis2506 Microsoft Office Excel 5 15.04.2009 08:34