Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сортировка объединённого множества
 
 автор: Axxil   (02.10.2008 в 15:57)   письмо автору
 
 

Есть две таблицы

t1.user_id    t1.some_date

t2.user_id   t2.some_date 


Нужно их объединить с помощью left join и провести сортировку так как будто поле some_date общее.
Что-то типа того:

select * from t1
left join t2 on t2.user_id = t1.user_id
order by some_date desc


Надеюсь задача понятно сформулирована.

Как бы это реализовать?

  Ответить  
 
 автор: Trianon   (02.10.2008 в 16:23)   письмо автору
 
   для: Axxil   (02.10.2008 в 15:57)
 

>Нужно их объединить с помощью left join и провести сортировку так как будто поле some_date общее.

В каком смысле - общее?
Сейчас у Вас таблицы соединены по полю user_id (случайно или намереннно).

  Ответить  
 
 автор: Axxil   (02.10.2008 в 16:41)   письмо автору
 
   для: Trianon   (02.10.2008 в 16:23)
 

Неправильно сформулировал :(

в первой таблице имеем


t1.user_id           t1.some_date
   2                  2008-09-30
   3                  2008-09-24
   4                  2008-09-22
   5                  2008-09-29


во второй таблице имеем

t2.user_id           t2.some_date
   2                  2008-09-27
   3                  2008-09-30


Теперь надо построить запрос так, чтобы вывести всех юзеров, но отсортировать так, чтобы даты из второй таблицы перебили даты первой для соответствующих юзеров. И итоговую выборку отсортировать в порядке убывания.

  Ответить  
 
 автор: Trianon   (02.10.2008 в 18:22)   письмо автору
 
   для: Axxil   (02.10.2008 в 16:41)
 

SELECT t1.*, COALESCE(t2.some_date, t1.some_date) as sortdate
FROM t1 LEFT JOIN t2 ON t1.user_id = t2.user_id
ORDER BY sortdate DESC

так чтоли?

  Ответить  
 
 автор: Axxil   (02.10.2008 в 21:57)   письмо автору
 
   для: Trianon   (02.10.2008 в 18:22)
 

Угу.
Спасибо огромное.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования