Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Сложное объединение таблиц (Михаил) 17/10/2016 - 11:07:54
      Re: Сложное объединение таблиц (Михаил) 17/10/2016 - 11:38:20
      Re: Сложное объединение таблиц (Михаил) 17/10/2016 - 12:04:16
      Re: Сложное объединение таблиц (Михаил) 17/10/2016 - 12:36:54
      Re: Решено (Михаил) 17/10/2016 - 23:16:07

> Original message text:
> From: Михаил - 17/10/2016 - 11:07:54
> Subject:Сложное объединение таблиц
> -----------------
> Натолкните на мысль пожалуйста.
> Опять столкнулся с проблемой выборки из таблиц.
> Причина в том, что изначально не были предусмотрены некоторые требования, которые требуется выполнить сейчас.
> Исходные условия:
> Существуют две таблицы.
> client (id, user_id, modified, ...) - (modified = timestamp)
> client_log (id,client_id,user_id, created, ...) - (created = timestamp)
>
> Когда заводится новый клиент он заносится только в таблицу client, фиксируется менеджер его занёсший (user_id) и дата создания записи.
>
> В дальнейшем при внесении правки в данные клиента предыдущая запись копируется из client в client_log то есть:
> id -> client_id
> user_id -> user_id
> ... -> ...
> а в client заносится user_id того, кто вносил правку и другие данные.
>
> НО! modified НЕ МЕНЯЕТСЯ!!!
> А в client_log создаётся created (timestamp) - время внесения изменений.
>
> Сейчас стоит задача определить сколько и каких новых клиентов кто из менеджеров заносил в базу в определённый период.
>
> Те клиенты, в которых не вносились изменения определяются легко:
> SELECT SQL_CALC_FOUND_ROWS `id`, `user_id`, `modified`, ...
> FROM client
> WHERE `modified` >='2014-01-01 00:00:00' AND `modified` <='2014-10-31 23:59:59' AND `user_id` = '12' ORDER BY `user_id`
>
> А вот как определить кто и когда создал клиента, в которого вносилась правка не могу придумать.
> Правка могла вноситься не один раз, в том числе автоматически. В этом случае user_id = 0
>
>
>


From: Михаил - 17/10/2016 - 12:36:54
Subject:Сложное объединение таблиц
-----------------
Вторую часть вроде бы решил так:
SELECT * FROM `client_log` `c1`, (SELECT `id` FROM `client_log` GROUP BY `client_id` ORDER BY `created`) `c2` WHERE `c1`.`id`=`c2`.`id` AND `c1`.`user_id`=12 AND `c1`.`created` >= '2014-01-01 00:00:00' AND `c1`.`created` <= '2014-10-31 23:59:59'

Осталось понять как объединить данные из обеих таблиц, т.к. там разные названия полей.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
43655



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |