Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объединение двух разных таблиц 
:(
    Опции темы
Wowa
Дата 2.4.2005, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Есть две таблицы, в одной 20 столбцов - в другой 21.
В таблицах различаются только 2 столбца. Остальные столбцы одинаковые.

Как сделать SELECT * из этих двух таблиц так, чтобы эти две таблицы пристыковывались друг с другу не по стольцам или каким-то критериям, а просто чтобы для запроса SELECT * это выглядело одной таблицей с 22 столбцами.
PM WWW   Вверх
Kesh
Дата 2.4.2005, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 15
Всего: 54



Admin А почему не пристыковывать по столбцам... если записи одинаковые - быбирать дополнительное поле по primary key через join...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
simanyay
Дата 2.4.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Антон Ковалёв
****


Профиль
Группа: Участник
Сообщений: 2053
Регистрация: 22.8.2002

Репутация: нет
Всего: 36



Насколько я понял эту проблему, настолько я смог сообразить решение:
Код

SELECT t1.*, t2.different_columns FROM table1 as t1, table2 as t2 WHERE t1.id = t2.id;


Если я не так понял, поясни плиз


--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
Wowa
Дата 2.4.2005, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Kesh @ 2.4.2005, 12:23)
Admin А почему не пристыковывать по столбцам... если записи одинаковые - быбирать дополнительное поле по primary key через join...

дык. записи в этих двух таблицах совершенно разные. И они никак ни по каким полям не связаны. Мне просто надо их представить ввиде одной таблицы.
Добавлено @ 14:46
Цитата(simanyay @ 2.4.2005, 12:39)
WHERE t1.id = t2.id;

они не связаны. Это все должны быть разные строки в выборке.
PM WWW   Вверх
simanyay
Дата 2.4.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Антон Ковалёв
****


Профиль
Группа: Участник
Сообщений: 2053
Регистрация: 22.8.2002

Репутация: нет
Всего: 36



Тогда же получиться декартово произведение? т.е. каждая строка первой таблицы, будет присоединена ко всем строкам второй. Тебе это нужно? Тогда просто соединяй без условий. Но (!) это не есть гут, это очень плохо.


--------------------
«It's better to be a pirate than to join the Navy» — Steve Jobs.
PM MAIL WWW   Вверх
Wowa
Дата 2.4.2005, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(simanyay @ 2.4.2005, 13:17)
Тогда же получиться декартово произведение? т.е. каждая строка первой таблицы, будет присоединена ко всем строкам второй. Тебе это нужно? Тогда просто соединяй без условий. Но (!) это не есть гут, это очень плохо.

дык, не нужно мне соединять строки одна с другой. Последний столбец первой таблицы с первым столбцом второй таблицы - не нужно.
Добавлено @ 17:25
мне нужно соединение, которое было бы равносильно выбраннным данным из первой таблицы и добавленным в массив + выбранным данным из второй таблицы, которые также в этот же массив добавить.
PM WWW   Вверх
Secandr
Дата 3.4.2005, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 6
Всего: 39



Может Union?


--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Kesh
Дата 3.4.2005, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 15
Всего: 54



Admin Может на примере пояснишь?.. А то я что-то не пойму... smile


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Wowa
Дата 3.4.2005, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Secandr @ 3.4.2005, 09:00)
Может Union?

Да. Юнион подходит, но он только начиная с четвертой версии MySQL доступен и если разное кол-во столбцов в таблицах, то
Код

SELECT * FROM table UNION SELECT * FROM table2 


не подходит.
PM WWW   Вверх
Kesh
Дата 3.4.2005, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 15
Всего: 54



Но ведь можно в нужном запросе искусственно добавить столбцы...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Wowa
Дата 3.4.2005, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

Репутация: нет
Всего: 290



Цитата(Kesh @ 3.4.2005, 10:53)
Но ведь можно в нужном запросе искусственно добавить столбцы...

как?

Мне просто лень что-то все 20 столбцов, с которых выборка нужна, перечислять в запросе.
PM WWW   Вверх
Secandr
Дата 3.4.2005, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Связист
****


Профиль
Группа: Экс. модератор
Сообщений: 4043
Регистрация: 3.8.2003
Где: Russia, Volgograd

Репутация: 6
Всего: 39



Код

SELECT a,b,'','' FROM table UNION SELECT a,b,c,d FROM table2 



--------------------
Мышки плакали, кололись, но продолжали жрать кактусы (с) cisco
PM ICQ AOL   Вверх
Kesh
Дата 6.4.2005, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 15
Всего: 54



Цитата(Secandr @ 3.4.2005, 13:48)
Код

SELECT a,b,'','' FROM table UNION SELECT a,b,c,d FROM table2 

Вот-вот...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Cetus
Дата 7.4.2005, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 18.4.2004

Репутация: 1
Всего: 1



можно так попробовать, и гемороя не будет с написанием всех столбцов smile
SELECT table1.*, NULL from table1 union select table2.* from table2
(тестировалось на MySQL 4.0.2)
Добавлено @ 07:13
либо вместо NULL написать '' (как было замечено выше)
--------------------
Легко внести изменения в код.Трудно сделать это корректно.
PM MAIL   Вверх
Akina
Дата 7.4.2005, 08:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(Cetus @ 7.4.2005, 08:11)
можно так попробовать, и гемороя не будет с написанием всех столбцов
SELECT table1.*, NULL from table1 union select table2.* from table2
(тестировалось на MySQL 4.0.2)

Все бы хорошо, но нужно иметь гарантию что * выдаст столбцы в нужном порядке...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0633 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.