Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка в join запросе 
:(
    Опции темы
realPROme
Дата 12.7.2009, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(skyboy @  12.7.2009,  13:44 Найти цитируемый пост)
в итоге, озвучил-таки структуру(хоть и абстрактно, без кода). и вот решение

я писал что таблицы имеют абсолютно разные структуры, UNION не пройдет, во первых, а, во-вторых, загвоздка только в одном - в сортировке, где она в представленнов вами варианте?

Цитата(Ипатьев @  12.7.2009,  14:10 Найти цитируемый пост)
говорят ровно о противоположном

я прошу решить поставленный вопрос, а не искать другие пути решения
если не можете мне помочь, прошу не по теме не писать и не фамильярничать
PM MAIL   Вверх
bars80080
Дата 12.7.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



show create table для каждой таблицы, чтобы однозначно решить вопрос о применении или нет метода union
PM MAIL WWW   Вверх
realPROme
Дата 12.7.2009, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



bars80080, для примера, пара таблиц

Код

-- 
-- Структура таблицы `_posts`
-- 

CREATE TABLE `_posts` (
  `post_id` int(10) unsigned NOT NULL auto_increment,
  `poster` varchar(200) NOT NULL default '',
  `poster_id` int(10) unsigned NOT NULL default '1',
  `poster_ip` varchar(15) default NULL,
  `poster_email` varchar(50) default NULL,
  `message` text,
  `hide_smilies` tinyint(1) NOT NULL default '0',
  `posted` int(10) unsigned NOT NULL default '0',
  `edited` int(10) unsigned default NULL,
  `edited_by` varchar(200) default NULL,
  `topic_id` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`post_id`),
  KEY `topic_id` (`topic_id`),
  KEY `posted` (`posted`),
  KEY `posts_mx` (`poster_id`,`topic_id`)
) ENGINE=MyISAM;

-- --------------------------------------------------------

-- 
-- Структура таблицы `_fotos`
-- 

CREATE TABLE `_fotos` (
  `user_id` int(10) unsigned NOT NULL,
  `fotos_id` int(10) unsigned NOT NULL auto_increment,
  `fotos_filename` varchar(40) NOT NULL,
  `fotos_name` varchar(40) NOT NULL,
  `fotos_comments` int(10) unsigned NOT NULL,
  `fotos_width` smallint(5) unsigned NOT NULL,
  `fotos_height` smallint(5) unsigned NOT NULL,
  `fotos_date` int(10) unsigned NOT NULL,
  UNIQUE KEY `fotos_id` (`fotos_id`),
  KEY `user_id` (`user_id`),
  KEY `fotos_date` (`fotos_date`)
) ENGINE=MyISAM;

-- --------------------------------------------------------

-- 
-- Структура таблицы `_notes`
-- 

CREATE TABLE `_notes` (
  `notes_id` int(10) unsigned NOT NULL auto_increment,
  `user_id` int(10) unsigned NOT NULL,
  `notes` varchar(250) NOT NULL,
  `friends_only` tinyint(4) NOT NULL,
  `date` int(10) unsigned NOT NULL,
  `comments` smallint(5) unsigned NOT NULL,
  UNIQUE KEY `notes_id` (`notes_id`),
  KEY `user_id` (`user_id`),
  KEY `friends_only` (`friends_only`),
  KEY `date` (`date`),
  KEY `comments` (`comments`)
) ENGINE=MyISAM;


сортировать соотв. по:
_posts.posted
_fotos.fotos_date
_notes.date

Это сообщение отредактировал(а) realPROme - 12.7.2009, 20:16
PM MAIL   Вверх
skyboy
Дата 12.7.2009, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

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



Цитата(realPROme @  12.7.2009,  17:19 Найти цитируемый пост)
я писал что таблицы имеют абсолютно разные структуры

некоторые поля все же есть в каждой таблице: поле с датой для сортировки и ключевое поле(или поля) для однозначной идентификации. если у тебя настолько разная структура, что количество необходимых полей отличается, то можно:
а) для всех таблиц, кроме тех, что с максимальным количеством полей, выводить вместо "недостающих" полей константы:
Код

SELECT id,posted, ""
FROM posts
UNION ALL
SELECT id, fotos_date. fotos_name
FROM fotos
ORDER BY 2

б) выбирать только идентификаторы + даты(в этом случае количество полей совпадает). затем отдельно для нужных идентификаторов выбирать допинформацию в зависимости от того, к какой сущности относится идентификатор
И знаешь, я все ещё не могу понять: как ты собирался использовать JOIN, чтоб выбрать данные о разных сущностях с разной структурой хранения информации, но обработать(отсортировать) их однотипно. 
Цитата(realPROme @  12.7.2009,  17:19 Найти цитируемый пост)
загвоздка только в одном - в сортировке, где она в представленнов вами варианте?

т.е. "ORDER BY 1" в конце запроса это не сортировка по значению в первом по порядке поле? а что же это тогда? о_0
Цитата(realPROme @  12.7.2009,  17:19 Найти цитируемый пост)
если не можете мне помочь, прошу не по теме не писать и не фамильярничать 

чтоб заявить "да, я действительно хочу одеть штаны на голову и мне пофиг, что это бессмысленно" не помешает привести хотя бы пару аргументов. ну, чтоб люди могли оценить: капризы это или насущная необходимость.
PM MAIL   Вверх
realPROme
Дата 13.7.2009, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(skyboy @  12.7.2009,  21:30 Найти цитируемый пост)
чтоб выбрать данные о разных сущностях с разной структурой хранения информации, но обработать(отсортировать) их однотипно

не вижну принципиальной проблемы - какая разница что за данные привязаны, сортировка же ведется по соотв. строчкам, а структура данных при JOIN обобщается, проблема только в реализации
PM MAIL   Вверх
Ипатьев
Дата 13.7.2009, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



при join данные не складываются, а умножаются.
ты бы попробовал что ли, сначала свой джойн на реальных данных, хотя бы и без сортировки. а потом уже тут разорялся.
PM MAIL   Вверх
realPROme
Дата 13.7.2009, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ипатьев, речь шла о структуре, а не о данных
PM MAIL   Вверх
Ипатьев
Дата 13.7.2009, 09:18 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Это просто фантастика какая-то. Я впервые встречаю человека, который мало того, что не понимает того, чем занимается, но и постоянно спорит при этом. 
Казалось бы - какая разница, о чем идет речь. Возьми, проверь и убедись, что твои представления о джойне катастрофически далеки от реальности. Но вместо этого какая-то странная отписка.

Вообще удивительная складывается ситуация. Несколько человек терпеливо пытаются решить проблемы автора. При этом автор только и делает, что спорит.
Я ошибаюсь, или таких людей в интернете называют словом "тролль"? Задача их не решить проблему, а устроить возможно более длинное обсуждение.

PM MAIL   Вверх
realPROme
Дата 13.7.2009, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ипатьев, я понимаю, что

Код

SELECT * FROM t1,t2,t3


-- 
-- Структура таблицы `t1`
-- 

CREATE TABLE `t1` (
  `id1` tinyint(4) NOT NULL,
  `date1` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

-- 
-- Дамп данных таблицы `t1`
-- 

INSERT INTO `t1` VALUES (1, 1);
INSERT INTO `t1` VALUES (2, 2);

-- --------------------------------------------------------

-- 
-- Структура таблицы `t2`
-- 

CREATE TABLE `t2` (
  `id2` tinyint(4) NOT NULL,
  `date2` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

-- 
-- Дамп данных таблицы `t2`
-- 

INSERT INTO `t2` VALUES (3, 3);
INSERT INTO `t2` VALUES (4, 4);

-- --------------------------------------------------------

-- 
-- Структура таблицы `t3`
-- 

CREATE TABLE `t3` (
  `id3` tinyint(4) NOT NULL,
  `date3` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

-- 
-- Дамп данных таблицы `t3`
-- 

INSERT INTO `t3` VALUES (5, 5);
INSERT INTO `t3` VALUES (6, 6);


выдаст

id1 date1 id2 date2 id3 date3
1    1    3    3    5    5
2    2    3    3    5    5
1    1    4    4    5    5
2    2    4    4    5    5
1    1    3    3    6    6
2    2    3    3    6    6
1    1    4    4    6    6
2    2    4    4    6    6

и что с этого?
тема вообще о сортировке - это единственное, что меня волнует
знаете как отсортировать? если нет, ваши посты ничем не помогут
PM MAIL   Вверх
Ипатьев
Дата 13.7.2009, 09:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Нет, не понимаешь. Сделай в этих таблицах хотя бы по 10 записей, а не по две.
У тебя же ведь в реальных таблицах будет не по две записи, и не по десять?

Какой смысл в сортировке, если база и без нее умрет?
PM MAIL   Вверх
realPROme
Дата 13.7.2009, 10:06 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Ипатьев @ 13.7.2009,  09:36)
Нет, не понимаешь. Сделай в этих таблицах хотя бы по 10 записей, а не по две.
У тебя же ведь в реальных таблицах будет не по две записи, и не по десять?

Какой смысл в сортировке, если база и без нее умрет?

а какой смысл в вашем волнении? меня интересует лишь поставленный вопрос - сортировка, остальное это уже не ваши проблемы
оки, тему можно считать закрытой, если кто сможет все же дать ответ на вопрос - буду очень благодарен этому человеку
PM MAIL   Вверх
youri
Дата 13.7.2009, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(youri @  9.7.2009,  14:00 Найти цитируемый пост)
а что содержится в таблицах, полях?


Цитата(realPROme @  9.7.2009,  14:04 Найти цитируемый пост)
youri, инфа всякая... а какая разница? 


Цитата(realPROme @  12.7.2009,  13:28 Найти цитируемый пост)
задача вообще какая: есть большой готовый проект, в рамках которого множество различных сервисов, соотв. - много различных таблиц, но в каждой из них есть некое поле - штамп времени события... вот по нему и надо выполнять сортировку - выбирать все события из десятка различных по структуре таблиц, сортируя по времени...


и вот после того как ты все-таки ответил на мой вопрос, стало понятно, что тебе надо ;-)

Цитата(realPROme @  13.7.2009,  10:06 Найти цитируемый пост)
меня интересует лишь поставленный вопрос - сортировка, остальное это уже не ваши проблемы

ну хорошо, т.е. ты хочешь, чтобы строки из разных таблиц отсортировались по дате, используя JOIN, а не UNION?
PM   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




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


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

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