Помогите решить...
Дано:
В организации есть 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` - а это что?
А можно поподробнее?
`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 :)
Проверку на существование:
Если нет машины, то вернёт mysql_num_rows = 0, если есть машина - то 1.
Делаешь проверку, и либо заносишь первым скриптом время, как я показал выше через SUM, либо дописываешь. Если добавить время, то запросом таким:
Или опять не то?
Проверку на существование:
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
В любом случае суммировыание по полю "время в пути " в условии 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