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

Поиск:

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


Шустрый
*


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

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



вроде ничего сложного, но что-то как в тупик попал
есть таблицы t1, t2, t3 и т.д.
в них есть различные столбики с информацией, которую нам нужно выбрать, отсортировав по значениям соотв. столбиков в каждой таблице - sort1, sort2, sort3 и т.д.
т.е. запрос там типа
Код

SELECT * FROM t1 INNER JOIN t2 ON 1 INNER JOIN t3 ON 1 ... ORDER BY t1.sort1, t2.sort2, t3.sort3 ...

проблема в том, что результат сортируется сначала по sort1, потом по sort2, по sort3 и т.д., а нужно так, чтоб при сортеровки эти поля были равноправны, т.е. если есть

t1
sort1 ------ blablabla1
1 ------ ...data1.1...
2 ------ ...data1.2...
3 ------ ...data1.3...

t2
sort2 ------ blablabla2
100 ------ ...data2.1...
4 ------ ...data2.2...
200 ------ ...data2.3...

t3
sort3 ------ blablabla3
300 ------ ...data3.1...
1 ------ ...data3.2...
400 ------ ...data3.3...

надо не

1 ------ ...data1.1...
2 ------ ...data1.2...
3 ------ ...data1.3...
+
4 ------ ...data2.2...
100 ------ ...data2.1...
200 ------ ...data2.3...
+
1 ------ ...data3.2...
300 ------ ...data3.1...
400 ------ ...data3.3...


а вот так:

1 ------ ...data1.1...
1 ------ ...data3.2...
2 ------ ...data1.2...
3 ------ ...data1.3...
4 ------ ...data2.2...
100 ------ ...data2.1...
200 ------ ...data2.3...
300 ------ ...data3.1...
400 ------ ...data3.3...

вроде доступно объяснил суть проблемы smile 
PM MAIL   Вверх
youri
Дата 9.7.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а что содержится в таблицах, полях?
PM   Вверх
realPROme
Дата 9.7.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



youri, инфа всякая... а какая разница? smile

Добавлено через 1 минуту и 5 секунд
соль в том, что в каждой табличке есть столбик (sort1, sort2, sort3 и т.д. для таблиц t1, t2, t3 и т.д. соотв.), по которому и нужно выполнять сортировку
PM MAIL   Вверх
Ипатьев
Дата 9.7.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Разница такая, что задача уж больно странная. И, возможно, она решается другим запросом. 
PM MAIL   Вверх
solenko
Дата 9.7.2009, 14:19 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



realPROme, ваш запрос не может дать такого результата как вы приводите в примерах. Определитесь что вам нужно получить -- join или union


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
youri
Дата 9.7.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Ипатьев @  9.7.2009,  14:18 Найти цитируемый пост)
И, возможно, она решается другим запросом

или с другой организацией бд
PM   Вверх
realPROme
Дата 9.7.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(solenko @  9.7.2009,  14:19 Найти цитируемый пост)
ваш запрос не может дать такого результата как вы приводите в примерах. Определитесь что вам нужно получить -- join или union

вообще никак?
union же будет создавать повышенную нагрузку при большом количестве таблиц?

Добавлено через 4 минуты и 23 секунды
solenko, упс, забыл smile
там все намного сложней, проблема просто с сортировкой, там inner-ы с реальными условиями, а не "ON 1"

Добавлено через 5 минут и 11 секунд
Цитата(Ипатьев @  9.7.2009,  14:18 Найти цитируемый пост)
возможно, она решается другим запросом

каким? smile
мне кажется что все несложно... туплю чего-то))

Это сообщение отредактировал(а) realPROme - 9.7.2009, 14:37
PM MAIL   Вверх
Ипатьев
Дата 9.7.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



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

Вообще-то, если логически поразмыслить, то бессмысленно спрашивать решение задачи, условия которой собеседнику неизвестны.

Учитывая пассаж про юнион, и про большое количество таблиц, я даже предположить боюсь, что там на самом деле.
PM MAIL   Вверх
skyboy
Дата 9.7.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



realPROme, затык начинается с того уровня, что при соединении через JOIN поля в принципе не могут быть "равноправными при сортировке".
либо у тебя однотипные данные в разных таблицах, и тебе надо использовать UNION для обеъдинения данных с единой структурой. пример: товары разного типа, хранящиеся в разных таблицах, но из которых охота сделать один прайс-лист с сортировкой по цене.
либо у тебя разноплановые данные и желание отсортировать по разным полям как по одному - непонятный каприз, не более. к примеру, чтоб значения номера парспорта было отсортировано наравне с фамилией.
PM MAIL   Вверх
realPROme
Дата 9.7.2009, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Ипатьев @  9.7.2009,  15:03 Найти цитируемый пост)
Странный диалог.
- какую задачу ты решаешь? 
- а какая разница?
- возможно, она решается другим способом.
- каким?

"какая разница" - это касалось данных в таблицах, т.к. это не имеет отношения к вопросу
под "возможно другим способом" - я имел в виду другой способ, а не другой путь решения


просьба, кто может, помочь с решением поставленного вопроса, не более
давайте просто считать, что вопрос чисто ради интереса задан - сможет ли кто-то найти его решение - да или нет

Это сообщение отредактировал(а) realPROme - 9.7.2009, 15:30
PM MAIL   Вверх
youri
Дата 9.7.2009, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



уже ответили
p.s. да, я невнимательно прочитал вопрос

Это сообщение отредактировал(а) youri - 9.7.2009, 23:10
PM   Вверх
realPROme
  Дата 10.7.2009, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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


Опытный
**


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

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



Цитата(realPROme @  10.7.2009,  00:00 Найти цитируемый пост)
обобщенной сортировки по нескольким рядкам

а это как?
PM   Вверх
skyboy
Дата 10.7.2009, 09:29 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(realPROme @  9.7.2009,  23:00 Найти цитируемый пост)
странно, конечно, что нет обобщенной сортировки

две записи:
Цитата

column0    column1   column2
      101          1               2
       304         2               1

и в каком порядке должна их вернуть "обобщенная сортировка" по столбцам column1 и column2?
как можно, не представляя логики в своей голове, требовать что-то от машины?
PM MAIL   Вверх
realPROme
  Дата 10.7.2009, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



skyboy, а что тут такого?
это ж, имхо, то же самое, что если сортировать таблицу по неуникальному полю, в котором есть дубли...
PM MAIL   Вверх
lelik133
Дата 10.7.2009, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



если ничего такого отсортируйте таблицы которую привел skyboy
PM ICQ   Вверх
skyboy
Дата 10.7.2009, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(realPROme @  10.7.2009,  09:56 Найти цитируемый пост)
то же самое, что если сортировать таблицу по неуникальному полю, в котором есть дубли... 

аналогия ясна.
усилим эффект:
Цитата

column0     column1      column2
     101            a                  c
     102            b                  b
     103            c                   a  

в каком порядке будет идти результат "обобщенной сортировки" по column1 и column2?
если порядок будет "101,102,103", то такой же эффект окажет "простая" сортировка по column1.
если порядок "103,102,101" - то это эквивалентно сортировке по одному поле column2.
если порядок "102,101,103" - то какой вообще смысл в подобной сортировке? с таким же успехом можно сортировать по случайному числу(order by rand())

Добавлено через 3 минуты и 44 секунды
Цитата(realPROme @  10.7.2009,  09:56 Найти цитируемый пост)
что если сортировать таблицу по неуникальному полю, в котором есть дубли... 

вообще говоря, если сравниваются два атомарных значения, то значение понятия дубликата очевидно.
так же не сложно выделить отношение "больше-меньше"
но для кортежей если отношение равенства ещё почти очевидно("a b c" равно "c a b"?), то отношение "больше-меньше"(необходимое для реализации сортировки) лично для меня вообще скрыто в тумане. 
PM MAIL   Вверх
realPROme
Дата 10.7.2009, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(skyboy @  10.7.2009,  17:28 Найти цитируемый пост)
в каком порядке будет идти результат "обобщенной сортировки" по column1 и column2?

в таком порядке, в каком сортируются поля строкового типа

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


Опытный
**


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

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



realPROme, напиши алгоритм, потому что кроме тебя никто не знает, как сортировать "обобщенной сортировкой"
PM   Вверх
realPROme
Дата 11.7.2009, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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


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



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

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



так они и не спрашивают про реализации, а про алгоритм. то есть, что ты понимаешь под обощённой сортировкой.

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


Шустрый
*


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

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



Цитата(bars80080 @  11.7.2009,  17:36 Найти цитируемый пост)
какой ответ должен быть в случаях с примерами?

column0     column1      column2
     101            a                  c
     102            b                  b
     103            c                   a  
с этим?
сортируется по некому временному columnX - который является объединением всех столбцов, а в чем проблема?
алгоритм - к примеру, используя MEMORY таблицу в нее производится экспорт соотв. данных, где каждый рядок "column0     column1      column2 и т.д." соотв. переименовывается в columnX, далее обычная сортировка по нему и все готово, или я чего-то не понимаю, проблема в чем?
PM MAIL   Вверх
Ипатьев
Дата 11.7.2009, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Двое суток ушло на то, чтобы выяснить, что у него все-таки юнион.

Добавлено @ 19:15
Впервые всnречаю человека, который так настойчиво сопротивляется решению своей задачи.
Догадываюсь, впрочем, о причинах. Судя по всему, там настолько неоптимальная структура базы, что ее просто стыдно показать.

Это сообщение отредактировал(а) Ипатьев - 11.7.2009, 19:50
PM MAIL   Вверх
bars80080
Дата 11.7.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



Цитата(Ипатьев @  11.7.2009,  19:13 Найти цитируемый пост)
Двое суток ушло на то, чтобы выяснить, что у него все-таки юнион

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

проше пани, пишите подробнее, не жалейте слов
PM MAIL WWW   Вверх
Ипатьев
Дата 11.7.2009, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Иногда я перестаю понимать, о чем пишут люди на этом форуме.
Цитата(bars80080 @  11.7.2009,  22:20 Найти цитируемый пост)
много многих постов идут в не в духе предложения какого-то решения автору

Как можно что-то предложить решение для задачи, которая не имеет решения?

PM MAIL   Вверх
bars80080
Дата 11.7.2009, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



Цитата(Ипатьев @  11.7.2009,  22:36 Найти цитируемый пост)
Как можно что-то предложить решение для задачи, которая не имеет решения?

объяснить, что и почему, разобраться в фантазиях, в которых он пребывает, наставить на путь истинный.
а вдруг речь вообще о другом
PM MAIL WWW   Вверх
skyboy
Дата 12.7.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(realPROme @  11.7.2009,  17:08 Найти цитируемый пост)
где каждый рядок "column0     column1      column2 и т.д." соотв. переименовывается в columnX, далее обычная сортировка по нему и все готово

Код

ORDER BY concat(column1, column2)
?
Для какой структуры БД такое может пригодиться?!
PM MAIL   Вверх
realPROme
Дата 12.7.2009, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(bars80080 @  11.7.2009,  22:20 Найти цитируемый пост)
пишите подробнее, не жалейте слов

это мне? я непонятно писал? вроде старался все расписать...

Цитата(skyboy @  12.7.2009,  12:07 Найти цитируемый пост)
Для какой структуры БД такое может пригодиться?!

вот надо что-то типа такого, только с учетом, что поля целочисленные, а не строковые...

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


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


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

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



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

товарищи solenko и Ипатьев  вполе конкретно говорили:тебе нужен union.
ты же как мог открещивался и убеждал, что тебе нужен join.
в итоге, озвучил-таки структуру(хоть и абстрактно, без кода). и вот решение:
Код

SELECT <поле с датой>, <остальные поля>
FROM таблица1
UNION ALL
SELECT <поле с датой>, <остальные поля>
FROM таблица2
.....
UNION ALL
SELECT <поле с датой>, <остальные поля>
FROM таблицаN
ORDER BY 1

и все.
PM MAIL   Вверх
Ипатьев
Дата 12.7.2009, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(realPROme @  12.7.2009,  13:28 Найти цитируемый пост)
вроде старался все расписать...

Это неправда.

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

Цитата(realPROme @  9.7.2009,  15:30 Найти цитируемый пост)
давайте просто считать, что вопрос чисто ради интереса задан 

 - говорят ровно о противоположном. 

Я согласен с bars80080, писать надо подробнее.  Всего-то надо было написать три строчки из последнего сообщения. И тут же ему написали запрос. Зачем было в течение предыдущих трех дней устраивать представление - я не понимаю.



PM MAIL   Вверх
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.1431 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


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

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