powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / UNION неодинаковых таблиц
5 сообщений из 5, страница 1 из 1
UNION неодинаковых таблиц
    #38479873
wsxedc83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения, поскольку вопрос связан скорее не с SQLite, а с SQL вообще, но в данном конкретном случае мне необходимо реализовать это на SQLite, так что пишу сюда.
Скорее всего, вопрос очень прост, но найти ответ я не смог. Прошу ткнуть носом в возможное решение.

Есть две таблицы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create table t1 (
  name      text not null,
  textdate  text not null,
  somedate integer null
);

insert into t1 values ( "john", "010113",11);
insert into t1 values ( "mary", "020113",12);
insert into t1 values ( "john", "030113",13);
insert into t1 values ( "mary", "050113",14);
insert into t1 values ( "john", "060113",15);



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create table t2 (
  name      text not null,
  textdate  text not null,
  somedata1  integer null,
  somedata2  text null
);

insert into t2 values ( "john", "010113", 1, "someTEXT1");
insert into t2 values ( "mary", "020113", 2, "someTEXT2");
insert into t2 values ( "john", "040113", 3, "someTEXT3");
insert into t2 values ( "mary", "050113", 4, "someTEXT4");
insert into t2 values ( "john", "060113", 5, "someTEXT5");



Хочу их слить в одну таблицу с таким результатом:
"john" "010113"11 1 "someTEXT1""mary" "020113"12 2 "someTEXT2""john" "030113"13null null"john" "040113"null 3 "someTEXT3""mary" "050113"14 4 "someTEXT4""john" "060113"15 5 "someTEXT5"

UNION вроде как на несоответствие полей ругается... Как ещё можно попробовать сделать?
Заранее спасибо!
...
Рейтинг: 0 / 0
UNION неодинаковых таблиц
    #38479899
ну, так-то у тебя тут больше JOIN, чем UNION
...
Рейтинг: 0 / 0
UNION неодинаковых таблиц
    #38479927
wsxedc83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый Э - Эх, прочитал http://www.sql.ru/forum/1010627/obedinenie-zapisey-iz-dvuh-tablic - там вроде неплохо про JOIN примеры представлены. Получается, что у меня будет выкинута либо строка 3 либо строка 4 реультирующей таблицы, либо, если использовать окончательный вариант по той же ссылке с аналогом LEFT OUTER JOIN - у меня будут поля name и textdate повторяться два раза в результирующей таблице два раза - в двух разных колонках. Это, конечно, тоже можно. И даже не смертельно - можно добавить пару полей перед первым столбцом и в них выводить через case name и textdate либо из первой либо из второй таблицы, но это ж объем запроса какой?!
Может есть как-то проще вариант?
...
Рейтинг: 0 / 0
UNION неодинаковых таблиц
    #38480620
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wsxedc83Добрый Э - Эх, прочитал http://www.sql.ru/forum/1010627/obedinenie-zapisey-iz-dvuh-tablic - там вроде неплохо про JOIN примеры представлены. Получается, что у меня будет выкинута либо строка 3 либо строка 4 реультирующей таблицы, Да. То что ты хочешь называется FULL OUTER JOIN и оно в SQLite не поддерживается.

Самое простое решение - сделай третью таблицу с полями совпадающими с PK первых двух. Заполни ее всеми уникальными PK. А потом простой left join этой третьей таблицы с первыми двумя.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
create table t3(name text, textdate text);

insert into t3 select name, textdate from t1 union select name,textdate from t2;

select t3.name, t3.textdate, t1.somedate, t2.somedata1, t2.somedata2
from t3
left join t1 on t3.name=t1.name and t3.textdate=t1.textdate
left join t2 on t3.name=t2.name and t3.textdate=t2.textdate
;


Все.

Если не хочешь хранить полный набор ключей в t3 - объявляй ее временной таблицей.
...
Рейтинг: 0 / 0
UNION неодинаковых таблиц
    #38481597
wsxedc83
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlВсе.

Если не хочешь хранить полный набор ключей в t3 - объявляй ее временной таблицей.

Да, примерно так и сделал. Большое спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / UNION неодинаковых таблиц
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]