select b.id, b.name, b.sum_value, b.max_date -- а в самом конечной выборке выбираем только первые номера нумерации строк от каждого человека
from ( select a.id, a.name, a.sum_value, a.max_date, -- в этом подзапросе нумеруем строки в пределах одного человека
@rank := IF(@name2 != a.name, 1, @rank + 1) as rnk,
@name2 := a.name
from (select t.id, t.name, -- в этом подзапросе находим сумму очков и максимум даты
@sum := IF(@name != name, value, @sum + value) as sum_value,
@max := IF(@name != name, date, @max) as max_date,
@name := name
from
(select 1 id, 'Вася' Name, 7 value, STR_TO_DATE('01.01.2018', '%d.%m.%Y') date union all
select 2 id, 'Вася' Name, 2 value, STR_TO_DATE('02.02.2018', '%d.%m.%Y') date union all
select 3 id, 'Петя' Name, 2 value, STR_TO_DATE('01.01.2018', '%d.%m.%Y') date union all
select 4 id, 'Вова' Name, 2 value, STR_TO_DATE('01.01.2018', '%d.%m.%Y') date ) t, --исходные данные в виде таблицы t
(select @max := 0, @sum := 0, @name := '') p
order by t.name, date desc
) a,
(select @rank := 1, @name2 := '') p2
order by a.name, a.sum_value desc
) b where b.rnk = 1
order by b.id, b.name update tab1 t1, tab2 t2 // таблицы, участвующие в Update
set t1.key = ? // устанавливаем параметр key, только непонятно, что задаем
where t1.id = t2.id // соответствие записей по первичным ключамupdate tab1 t1, tab2 t2 // таблицы, участвующие в Update
set t1.key = ? // устанавливаем параметр key, только непонятно, что задаем
where t1.SecondName = t2.SecondName // допустим, пусть будет обновление key у тех записей, у которых есть полное соответствие атрибутов.
and t1.LastName = t2.LastName
and t1.ThirdName = t2.ThirdName var script_elem = document.createElement('script'); // создаем DOM-элемент
script_elem.innerHTML = 'alert(123456)'; // помещаем в него код скрипта
document.body.appendChild(script_elem); // добавляем в документ При этом достаю только те значения, которые имеют самый старший "ключ"
ALTER TABLE test2.board ADD data_razm datatime null AFTER moder;
ALTER TABLE test2.board ADD ip tinytext null AFTER data_razm;update test2.board t2b, test.board tb
set t2b.data_razm = tb.data_razm,
t2b.ip = tb.ip
where t2b.id = tb.idvar my_array =
[
{
data: 123
},
{
data: 845
},
{
data: 'dsdsd'
}
];
my_array.forEach(function(item, i, arr)
{
switch(i)
{
case 0:
item.operation = item.data * 5;
break;
case 1:
item.operation = item.data * 2;
break;
default:
item.operation = item.data + 'qwqwqw';
}
});$arraytime = ['07:01:05', '06:21:30', '08:15:15', '07:13:08', '06:02:00', '09:21:10', '12:54:48'];
$sum = 0;
foreach($arraytime as $time)
$sum += strtotime($time) - strtotime('00:00:00');
echo sprintf('%d:', $sum / 3600).date('i:s', $sum); select last_move.book_id, last_move.rack_id, last_move.board_id, -- последнее местонахождение книги
first_move.date_from, -- дата первого появления на складе
last_move.date_to -- дата последнего перемещения
from
-- подзапрос, получаем первые записи появления каждой книги на складе
(select *
from (select t.*, rank() over (partition by t.book_id order by t.date_from) rnk
from table t)
where rnk = 1) first_move
join
-- подзапрос, получаем последние записи перемещения каждой книги на складе
(select *
from (select t.*, rank() over (partition by t.book_id order by t.date_from DESC) rnk
from table t)
where rnk = 1) last_move
-- сопоставляем записи
on first_move.book_id = last_move.book_id $sql = "insert into table_name(name) value('".$str_param."')";$sql = "insert into table_name(name) value(:param1)"; //текст запроса с метками для вставки параметров;
$prep_sql = $sqlconnect->prepare($sql); //подготовка SQL-запроса, фактически, синтаксический разбор и выявление меток, куда вставлять параметры, проверка ошибок;
$prep_sql->bindParam('param1', $str_param, STRING_TYPE); //связываем параметры с метками в запросе, проверяем тип входного параметра;
$prep_sql->execute(); //выполняем запрос