SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.10.2010 13:30:50

Street85
Участник
Зарегистрирован: 17.10.2010
Сообщений: 9

объеденение двух таблиц в одну

есть таблицы:
pages_ru, pages_en с одинаковой структурой, как создать новую таблицу pages из этих двух

pages_ru
id    title                    text
1    Заголовок 1    Текст 1
7    Заголовок 2    Текст 2
12    Заголовок 3    Текст 3

pages_en
id    title            text
8    Title 1    Text 1
15    Title 2    Text 2
23    Title 3    Text 3

pages
id    title_ru            title_en    text_ru    text_en
1    Заголовок 1    Title 1    Текст 1    Text 1
2    Заголовок 2    Title 2    Текст 2    Text 2
3    Заголовок 3    Title 3    Текст 3    Text 3


Прикрепленные файлы:
Attachment Icon tables.jpg, Размер: 27,138 байт, Скачано: 387

Неактивен

 

#2 17.10.2010 22:59:14

nikolajtesla
Завсегдатай
Зарегистрирован: 12.10.2010
Сообщений: 25

Re: объеденение двух таблиц в одну

Видимо никак, так как никто не знает, что именно Заголовок 1 = Title 1, а не Title 2 или Title 3, и нет никакой виимой связи между id в разных таблицах.

Неактивен

 

#3 17.10.2010 23:26:12

Street85
Участник
Зарегистрирован: 17.10.2010
Сообщений: 9

Re: объеденение двух таблиц в одну

nikolajtesla: Заголовок 1, Title 1, Title 2 это данные которые находятся в таблицах, между id есть связь в том плане что данные в новую таблицу будут вставляться по очереди

Отредактированно Street85 (17.10.2010 23:26:44)

Неактивен

 

#4 18.10.2010 05:13:02

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5847

Re: объеденение двух таблиц в одну

Street85 написал:

между id есть связь в том плане что данные в новую таблицу будут вставляться по очереди

Это не связь по id, а связь по номерам строк. Так как сервер MySQL телепатией не владеет, то вам нужно явно указать порядок объединения данных, например, создав дополнительные колонки с нумерацией строк.

Street85 написал:

как создать новую таблицу pages из этих двух

Можно сразу создать заполненную таблицу:
CREATE TABLE .. SELECT ..
Но при таком способе нельзя явно указать тип хранилища, не будут созданы индексы, да и тип поля может оказаться не тот, что вам нужен. Лучше сначала создать пустую таблицу, указав точные определения, а потом внести данные:
INSERT .. SELECT ..

Неактивен

 

#5 18.10.2010 10:47:59

Street85
Участник
Зарегистрирован: 17.10.2010
Сообщений: 9

Re: объеденение двух таблиц в одну

а нельзя "выровнять" id по порядку, а потом запросом внести данные объединив эти таблицы? Просто данных очень много

Неактивен

 

#6 18.10.2010 16:08:30

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: объеденение двух таблиц в одну

Можно, например, пробежаться курсором по обеим табличкам. Но шанс, что
в какой-то из таблиц окажется таки «лишняя» строка — очень велик.

Неактивен

 

#7 18.10.2010 18:08:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5847

Re: объеденение двух таблиц в одну

Street85 написал:

а нельзя "выровнять" id по порядку

Что значит "выровнять"? И чем это отличается от создания нумерации строк?

insert into pages
select i, t1.title title_ru, t2.title title_en, t1.`text` text_ru, t2.`text` text_en from
(select @i:=@i+1 i, title, `text` from pages_ru,(select @i:=0) t) t1
join
(select @j:=@j+1 i, title, `text` from pages_en,(select @j:=0) t) t2 using(i);

Неактивен

 

#8 27.10.2010 13:38:13

Street85
Участник
Зарегистрирован: 17.10.2010
Сообщений: 9

Re: объеденение двух таблиц в одну

vasya спасибо

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson