SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 04.10.2011 10:57:29

waw555
Участник
Зарегистрирован: 26.08.2010
Сообщений: 11

Сортировка по 2-м таблицам

Здравствуйте!

Помогите сделать сортировку при объединении двух таблиц

SELECT a.image, a.created, a.hits , b.name, e.thumb, c.title, c.thumb, c.path, c.hits, c.created , d.name, f.thumb FROM w4die_community_photos AS a JOIN w4die_users AS b ON a.creator = b.id JOIN w4die_community_videos AS c JOIN w4die_users AS d ON c.creator = d.id JOIN w4die_community_users AS e ON a.creator = b.id JOIN w4die_community_users AS f ON c.creator = b.id ORDER BY a.created DESC, c.created DESC LIMIT 1

Необходимо получить отсортированные данные из таблицы w4die_community_photos и w4die_community_videos, сечас все сортируется только по таблице w4die_community_videos

Неактивен

 

#2 04.10.2011 12:02:33

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

Re: Сортировка по 2-м таблицам

create table a (id int, aa int);
insert into a values(1,10),(2,20);
create table b (id int, bb int);
insert into b values (1,100),(1,90),(2,30);
select * from a join b using(id) order by aa desc, bb desc;
+------+------+------+
| id   | aa   | bb   |
+------+------+------+
|    2 |   20 |   30 |
|    1 |   10 |  100 |
|    1 |   10 |   90 |
+------+------+------+
 

Позволю себе усомниться в ваших словах о том, что данные неправильно сортируются. Приведите пример.

Неактивен

 

#3 04.10.2011 13:47:09

waw555
Участник
Зарегистрирован: 26.08.2010
Сообщений: 11

Re: Сортировка по 2-м таблицам

Сейчас в БД вот что:

w4die_community_photos

creator image created hits
116 images/photos/116/2/31ee599c969b0f97a78023dc.jpg 2011-10-03 11:28:06    2   
42 images/photos/42/3/f3d8d493eecc959cb3aa7ef7.jpg 2011-10-04 06:11:10 1

w4die_community_videos

title created hitst humb    path
"+100500" "2011-10-03 09:21:02" "1" "images/videos/116/thumbs/2E7YdLKjCYc.jpg" "http://www.youtube.com/watch?v=M473HaE-Ias&feature15"

После запроса

image    created    hits    name    thumb    title    thumb    path    hits    created    name    thumb
images/photos/116/2/31ee599c969b0f97a78023dc.jpg    2011-10-03 11:28:06    1    [ARMADA]    images/avatar/thumb_1aa000b5cec7cf1d44c1922f.jpg    Бременские музыканты. Наши дни.    images/videos/116/thumbs/8c2j537GXKM.jpg    http://www.youtube.com/watch?v=0zxxM9EY … feature...    2    2011-10-03 11:28:48    [ARMADA]    images/avatar/thumb_1aa000b5cec7cf1d44c1922f.jpg


То есть, из w4die_community_photos за сегодняшнее число ничего не вышло, а вышло за вчерашнее

Неактивен

 

#4 04.10.2011 13:54:06

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

Re: Сортировка по 2-м таблицам

А если убрать limit будут данные за сегодняшнее число?

Неактивен

 

#5 04.10.2011 14:00:54

waw555
Участник
Зарегистрирован: 26.08.2010
Сообщений: 11

Re: Сортировка по 2-м таблицам

w4die_community_photos

http://img210.imageshack.us/img210/3697/w4diecommunityphotos1.jpg
http://img412.imageshack.us/img412/295/w4diecommunityphotos2.jpg

w4die_community_videos

http://img233.imageshack.us/img233/1637/w4diecommunityvideos1.jpg
http://img440.imageshack.us/img440/9548/w4diecommunityvideos2.jpg

После запроса

http://img18.imageshack.us/img18/3542/88670708.jpg
http://img543.imageshack.us/img543/9628/94982439.jpg

Отредактированно waw555 (04.10.2011 14:02:59)

Неактивен

 

#6 04.10.2011 14:04:39

waw555
Участник
Зарегистрирован: 26.08.2010
Сообщений: 11

Re: Сортировка по 2-м таблицам

А если убрать limit будут данные за сегодняшнее число?

Выводит все данные за вчера, причем повторяет

Неактивен

 

#7 04.10.2011 14:08:05

waw555
Участник
Зарегистрирован: 26.08.2010
Сообщений: 11

Re: Сортировка по 2-м таблицам

Может тогда подскажите как выбрать из первой таблицы отсортировав по created и из второй отсортировав по created, ну и объединить в один запрос

Неактивен

 

#8 04.10.2011 14:32:47

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

Re: Сортировка по 2-м таблицам

Сортировка работает правильно, данные за 2011-10-04 из таблицы _photos не попадают в выборку так как не имеют соответствия в таблице _videos.

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

Неактивен

 

#9 04.10.2011 14:44:21

waw555
Участник
Зарегистрирован: 26.08.2010
Сообщений: 11

Re: Сортировка по 2-м таблицам

Мне нужно получить

image created hits из w4die_community_photos

title thumb path hits created из w4die_community_videos

name из w4die_users по creator из w4die_community_photos и name из w4die_users по creator из w4die_community_videos

thumb из w4die_community_users по creator из w4die_community_photos и thumb из w4die_community_users  по creator из w4die_community_videos

Отредактированно waw555 (04.10.2011 14:45:17)

Неактивен

 

#10 04.10.2011 14:54:47

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

Re: Сортировка по 2-м таблицам

Как связаны таблицы, например, _photos и _videos?

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

Неактивен

 

#11 04.10.2011 16:34:57

waw555
Участник
Зарегистрирован: 26.08.2010
Сообщений: 11

Re: Сортировка по 2-м таблицам

Спасибо, элементарные вещи так сложно построить ))) Я и забыл про то, что можно написать словами, а потом перенести в запрос, все в голове держал

SELECT a.image, a.created, a.hits , b.title, b.created, b.hits, b.path, c.name, d.name, e.thumb , f.thumb FROM w4die_community_photos AS a JOIN w4die_users AS c ON a.creator = c.id JOIN w4die_community_users AS e ON a.creator = e.userid JOIN w4die_community_videos AS b JOIN w4die_users AS d ON b.creator = d.id JOIN w4die_community_users AS f ON b.creator = f.userid ORDER BY a.created DESC, b.created DESC LIMIT 1


Вот так все работает.

Неактивен

 

#12 04.10.2011 19:50:17

waw555
Участник
Зарегистрирован: 26.08.2010
Сообщений: 11

Re: Сортировка по 2-м таблицам

Еще вопрос как сделать выборку за сегодня? Видел, что то типа TO_DAY

Неактивен

 

#13 04.10.2011 19:57:41

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

Re: Сортировка по 2-м таблицам

Неактивен

 

Board footer

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