[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сводная таблица.
rooor
Здравствуйте =)

Помогите решить...

Дано:
В организации есть 3 машины.
Каждый день они много раз выезжают по назначению.
В базу в первую таблицу записывается марка машины, номер и время в пути.

Задача:
Записать во вторую таблицу общее время рейса каждой машины за неделю.
Причём марки машин одинаковые. Во второй таблице должно быть 3 строки(по количеству машин)

Задачку решать не надо, просто подскажите, как сделать запрос, чтобы в сводную(вторую) таблицу всё это добро записывалось... Есть машина - приплюсовали ей время, нет машины - записали...



Спустя 4 минуты, 44 секунды (14.09.2011 - 22:30) inpost написал(а):
SELECT COUNT(*) as `cnt`,`nomer`
FROM `table1`
WHERE `date` BETWEEN `date1` AND `date2`
GROUP BY `nomer`

Вот за тебя решил 90% задачи :) Осталось только полученные 3 записи добавить в БД :)

Спустя 17 минут, 21 секунда (14.09.2011 - 22:48) rooor написал(а):
inpost

А можно поподробнее?

`cnt`,`nomer` - марка машины и номер.
`table1` - первая таблица, где записаны все рейсы за неделю
`date` - в моём случае, это номер недели
`date1` и `date2` - а это что?

Спустя 9 минут, 10 секунд (14.09.2011 - 22:57) rooor написал(а):
SELECT COUNT(*)
- выдаёт количество записей в таблице...

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

Спустя 3 минуты, 53 секунды (14.09.2011 - 23:01) inpost написал(а):
Ааа, общее время рейса, тогда SUM(), если хранишь ты записи в unix-формате, вместо COUNT :)

Проверку на существование:
SELECT `id` FROM `table2` WHERE `num` = 'номер машины' LIMIT 1
,
Если нет машины, то вернёт mysql_num_rows = 0, если есть машина - то 1.
Делаешь проверку, и либо заносишь первым скриптом время, как я показал выше через SUM, либо дописываешь. Если добавить время, то запросом таким:
UPDATE `table2` SET `time` = `time` + 'время пути' WHERE `nomer` = 'номер машины'


Или опять не то?

Спустя 14 минут, 50 секунд (14.09.2011 - 23:15) rooor написал(а):
inpost
Благодарю) Сейчас буду проверять. О результате сообщу, если не усну))
Может ещё что-нибудь понадобится))

Спустя 20 минут, 45 секунд (14.09.2011 - 23:36) caballero написал(а):
ты приведи структуру таблицы - одному Б-гу ведомо что подразумевается по временем в пути - количество часов, дата начала пути дата окончания и т.д.

В любом случае суммировыание по полю "время в пути " в условии where номер машимны

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

можно и одним запросом

update table2 set all_time = (select sum(timepath) from table1 where mashinenumber = 'mashine3') where mashinenumber = 'mashine3'
если сервер БД схавает

но в твоем случае выбери в три переменные а потом сделай три апдейта - по деревенски но зато понятно и надежно

впрочем время можно выбрать одним запросом

select sum(timepath),mashinenomber from table1 group by mashinenumber



Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.