//установка кодировки вывода
header('Content-Type: text/html; charset=utf-8');echo mb_detect_encoding(implode("\n", $output));header('Content-Type: text/html; charset=CP866');
$data = 'help';
exec(escapeshellcmd($data), $output, $return);
echo implode("<br>", $output)."<br>Return Code: ".$return; Select p.id as post_id, p.create_date as p_create_date, p.title as p_title, p.text as p_text,
img.id as img_id, img.name as img_name,
v.id as v_id, v.name as v_name
from posts p
left join images img on img.post_id = p.id
left join videos v on v.post_id = p.id$out = [];
foreach($rows as $row)
{
$post = &$out[$row['POST_ID']]; //ссылка на элемент массива первого уровня - пост
$post['CREATE_DATE'] = $row['P_CREATE_DATE'];
$post['TITLE'] = $row['P_TITLE'];
$post['TEXT'] = $row['P_TEXT'];
if(!is_null($row['IMG_ID']))
{
$image = &$post['IMAGES'][$row['IMG_ID']]; //ссылка на элемент массива второго уровня - элемент массива изображений
$image['NAME'] = $row['IMG_NAME'];
}
if(!is_null($row['V_ID']))
{
$video = &$post['VIDEOS'][$row['V_ID']]; //ссылка на элемент массива второго уровня - элемент массива видео
$video['NAME'] = $row['V_NAME'];
}
}$post = &$out[$row['POST_ID']];
$image = &$post['IMAGES'][$row['IMG_ID']];
$image['NAME'] = $row['IMG_NAME'];
$image['WIDTH'] = $row['IMG_WIDTH'];
$image['HEIGHT'] = $row['IMG_HEIGHT'];$out[$row['POST_ID']]['IMAGES'][$row['IMG_ID']]['NAME'] = $row['IMG_NAME'];
$out[$row['POST_ID']]['IMAGES'][$row['IMG_ID']]['WIDTH'] = $row['IMG_WIDTH'];
$out[$row['POST_ID']]['IMAGES'][$row['IMG_ID']]['HEIGHT'] = $row['IMG_HEIGHT']; 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); // добавляем в документ При этом достаю только те значения, которые имеют самый старший "ключ"