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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [MySql] Выбор из двух таблиц с сортировкой по дате 
V
    Опции темы
DeamonShan
Дата 14.10.2010, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть две таблицы: T1, T2

в каждой таблице имеется поле date типа timestamp. так в результате должно выводиться отсортированные строки по полю date

наприме, если

T!:

id date
1    1
2    3
3    4
4    18

T2:
id date
1    2
2    10
3    5

то результат должен быть: 

1) Т1.id=1
2) T2.id=1
3) T1.id=2
4) T1.id=3
5) T2.id=3
6) T2.id=2
7) T1.id=4



Помогите с запросом... В результат нужно включить значения из других таблиц. Есть еще две таблицы со статусами строк S1, S2 соответсвенно для таблицы T1 и T2. Т1.id=S1.id_t1, T2.id=S2_id_t2. Еще есть таблица, где хранится значение поля контрагент - C.

T1.cont_id=C.id, T2.cont_id=C.id

в результате для каждого результата должны иметь на выходе:

date, status, contragent_name

date - дата
status  - статус из таблиц S1, S2
contragent_name - название Контрагента из таблицы C.
PM MAIL   Вверх
Frees
Дата 14.10.2010, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

SELECT * FROM (
SELECT `id`
FROM T1
UNION ALL
SELECT `id`
FROM T2 )
ORDER BY 1


Это сообщение отредактировал(а) Frees - 14.10.2010, 13:04


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Zloxa
Дата 14.10.2010, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(DeamonShan @  14.10.2010,  11:35 Найти цитируемый пост)
то результат должен быть: 

Код

select concat(src,'.id =',id) from (
  select 'T1' src, t1.id,t1.date ftom t1
  union all
  select 'T2', t2.id,t2.date from t2
)
order by date


Добавлено @ 12:19
Frees, 
Цитата(Frees @  14.10.2010,  12:14 Найти цитируемый пост)
UNION

 smile 

Это сообщение отредактировал(а) Zloxa - 14.10.2010, 12:22


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Frees
Дата 14.10.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Zloxa @  14.10.2010,  15:18 Найти цитируемый пост)
Frees, Цитата(Frees @  14.10.2010,  12:14 )UNION  

не понял, к чему ты это? smile


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Akina
Дата 14.10.2010, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Frees, в отличие от UNION ALL при простом UNION строки distinct-ятся.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Frees
Дата 14.10.2010, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



да, точно не учел...
исправил пост выше

Это сообщение отредактировал(а) Frees - 14.10.2010, 13:04


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
DeamonShan
Дата 14.10.2010, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а статус и название контрагента привязанного к данной строке7
PM MAIL   Вверх
Zloxa
Дата 14.10.2010, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(DeamonShan @  14.10.2010,  13:04 Найти цитируемый пост)
а статус и название контрагента привязанного к данной строке7 

Аппетиты приходят во время еды?
Название темы "Выбор из двух таблиц с сортировкой по дате"
Чесгря о том, что нужно соедениться с еще двумя таблицами, я прочитал только что. Чтение старта топика я прекратил сразу после того как обнаружил соответствие моего понимания вашей задачи и названия темы. smile

там простой join, как я понимаю.
Код

select s.date,coalesce(s1.status,s2.status) status, c.contragent_name 
from 
 (
   select 'T1' src, t1.id,t1.date,t1.cont_id ftom t1
   union all
   select 'T2', t2.id,t2.date,t2.cont_id from t2
 ) s 
left join s1 on s1.id_t1 = s.id and s.src = 'T1'
left join s2 on s2.id_t2 = s.id and s.src = 'T2'
left join c on s.cont_id = c.id
order by s.date




--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
DeamonShan
Дата 14.10.2010, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну в топике ведь написано все подробно. в названии не поместилось все это)

Код

SELECT concat( src, '.id =', id ) 
FROM (

SELECT 'recive_log' src, recive_log.id, recive_log.time from recive_log
UNION ALL 
SELECT 'check_log', check_log.id, check_log.time
FROM check_log)


делаю такой завпрос в пхпмайадмин, получаю ошибку:

Код

#1248 - Every derived table must have its own alias


Это сообщение отредактировал(а) DeamonShan - 14.10.2010, 13:25
PM MAIL   Вверх
Frees
Дата 14.10.2010, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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





--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Zloxa
Дата 14.10.2010, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(DeamonShan @  14.10.2010,  13:19 Найти цитируемый пост)
ftom 




--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Frees
Дата 14.10.2010, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(DeamonShan @  14.10.2010,  16:19 Найти цитируемый пост)
ftom

Может From ?

Добавлено через 2 минуты и 34 секунды
OFF
DeamonShan, советую тебе думать а не бездумно копировать..


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
DeamonShan
Дата 14.10.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Zloxa, 
Frees, 

исправился... теперь возникла другая ошибка... отредактировал пост выше..

З 
Код

#1248 - Every derived table must have its own aliasЫ.

PM MAIL   Вверх
Zloxa
Дата 14.10.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



DeamonShan, присвойте алиас подзапросу.

Это сообщение отредактировал(а) Zloxa - 14.10.2010, 13:32


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
DeamonShan
Дата 14.10.2010, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Извеняюсь за глупые вопросы конечно!

Код

SELECT concat( src, '.id =', id ) 
FROM (

SELECT 'recive_log'src, recive_log.id, recive_log.time
FROM recive_log
UNION ALL 
SELECT 'check_log', check_log.id, check_log.time
FROM check_log
) AS tabl
ORDER BY tabl.time
LIMIT 0 , 20


я так понимаю, теперь таблица `tabl` будет содержать поля из id, time или же она присвоит все поля двух таблиц? Последнее не логично конечно, но все же.

Добавлено через 2 минуты и 59 секунд
Zloxa, за джоин отдельное спасибо!
Akina, 
Frees, 

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


 




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


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

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