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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не получается объединить вывод, разного количества полей из двух таблиц 
:(
    Опции темы
sugee
Дата 23.4.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте!
Здесь показана структура таблиц для базы данных будущего форума.
header
Код


  parent int not null,
  author char(25) not null,
  title char(25) not null,
  child int default 0 not null,
  area int default 1 not null,
  posted datetime not null,
  postid int unsigned not null auto_increment primary key



message
Код


  postid int unsigned not null auto_increment primary key,
  mess text  
Для просмотра отдельного топика нужно выбрать следующие поля:
author, title, posted из таблицы header, где postid='какое-то значение'
и mess из таблицы message, где  где postid='то же самое значение'.

Это нужно для вывода первого сообщения в топике. Потом ещё нужно проверить есть ли на него ответы(количество ответов хранится в поле child) и если есть, вывести их.
Но речь пока не об этом.
У меня возникла проблема с извлечением различного количества полей из двух таблиц. Вот такой запрос работает нормально
Код

 select `title` from `header` where `postid`='1'       
   union
 select `mess` from `message` where `postid`='1'
но работает до тех пор пока не добавишь в первый селект ещё и поля author и posted.
Я заглянул в документацию MySQL и не нашёл там ничего по поводу того что нельзя объединять вывод из таблиц с разным количеством полей.    Кроме union пробовал и inner join и псевдонимы таблицам присваивать, но никак... 
PM MAIL   Вверх
Kesh
Дата 23.4.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

select h.`title`, m.`mess` 
from `header` h, `message` m 
where (m.`postid`=1)
and (h.`postid`=1)

Будет таблица с повторяющимися title, но разными mess...
А вообще, лучше это делать в два запроса...  

Это сообщение отредактировал(а) Kesh - 23.4.2006, 11:55


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


Опытный
**


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

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



Угу..
Я присваивал псевдонимы с помощью  AS и почему-то не получалось.

А почему лучше в два запроса?
Я сначала так и собирался сделать, но мне хотелось понять почему таблицы не объединяются.
Разве не лучше с точки зрения производительности всё что возможно делать одним запросом? 
PM MAIL   Вверх
Kesh
Дата 24.4.2006, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



sugee, Дело в том, что ты пытался объединять поля разных типов и из разных таблиц - такое не работает... 


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


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

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





--------------------
Теперь при чем :P
PM   Вверх
sugee
Дата 25.4.2006, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


 




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


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

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