SELECT p.txt, count(distinct ip.ip)
FROM users u
LEFT JOIN usersip ip
ON u.id = ip.idUsers
LEFT JOIN podrazd p
ON u.podrazd = p.id
group by p.txt
order by p.txt;
SELECT p.txt, ip.ip
FROM users u
LEFT JOIN usersip ip
ON u.id = ip.idUsers
LEFT JOIN podrazd p
ON u.podrazd = p.id
group by p.txt, ip.ip
order by p.txt;
function soap_parser($response)
{
$res = array();
$xml = simplexml_load_string($soap);
$xml->registerXPathNamespace('nspost', 'http://russianpost.org/operationhistory/data');
foreach ($xml->xpath('//nspost:OperationHistoryData/nspost:historyRecord') as $item)
{
$item->registerXPathNamespace('nspost', 'http://russianpost.org/operationhistory/data');
$index_x = $item->xpath('.//nspost:OperationAddress/nspost:Index');
$address_x = $item->xpath('.//nspost:OperationAddress/nspost:Description');
$date_x = $item->xpath('.//nspost:OperationParameters/nspost:OperDate');
$type_id_x = $item->xpath('.//nspost:OperationParameters/nspost:OperType/nspost:Id');
$type_x = $item->xpath('.//nspost:OperationParameters/nspost:OperType/nspost:Name');
$attr_id_x = $item->xpath('.//nspost:OperationParameters/nspost:OperAttr/nspost:Id');
$attr_x = $item->xpath('.//nspost:OperationParameters/nspost:OperAttr/nspost:Name');
$res[] = array(
'index' => (int)$index_x[0],
'address' => (string)$address_x[0],
'type_id' => (int)$type_id_x[0],
'type' => (string)$type_x[0],
'attr_id' => (int)$attr_id_x[0],
'attr' => (string)$attr_x[0],
'datetime' => date("Y-m-d H:i:s", strtotime((string)$date_x[0])),
'date' => date("Y-m-d", strtotime((string)$date_x[0])),
'time' => date("H:i:s", strtotime((string)$date_x[0])),
);
}
return $res;
}
$value = array_combine($data['value_index'], $data['value'])[min($data['value_index'])];
$value = $data['value'][array_search(min($data['value_index']), $data['value_index'])];
$index = 0;
for ($i = 1; $i < count($data['value_index']); $i++) {
if ($data['value_index'][$i] < $data['value_index'][$index]) {
$index = $i;
}
}
$value = $data['value'][$index];
учитывая количество линий на чипсете, я могу установить 1 видеокарту в режиме x16
const keys = new Set(
Object.values(data)
.map((entry) => Object.keys(entry))
.flat()
);
const properties = Object.keys(data).map((key) => [
key.split("_").shift(),
key,
]);
const result = [...keys].reduce((acc, key) => {
acc[key] = Object.fromEntries(
properties.map(([property, type]) => [property, data[type][key] ?? 0])
);
return acc;
}, {});
const mappedData = Object.entries(data).reduce((acc, [type, entry]) => {
const property = type.split('_').shift();
for (const key in entry) {
acc[key] = { ...acc[key], [property]: entry[key] };
}
return acc;
}, {});
console.log(mappedData);
/*
{
"Машины и оборудование прочие, не включенные в другие группировки": {
"active": 1,
"inactive": 2
},
"Насосное оборудование, комлектующие, сопутствующие": {
"active": 1,
"inactive": 2
},
"Электродвигатели, генераторы и трансформаторы силовые": {
"active": 1,
"inactive": 2
},
"Средства транспортные прочие, не включенные в другие группировки": {
"active": 1
}
}
*/
const result = {};
const propertyMap = Object.fromEntries(Object.keys(data).map((key) => [key.split('_').shift(), key]));
for (const property in propertyMap) {
for (const key in data[propertyMap[property]]) {
result[key] ??= {};
result[key][property] = data[propertyMap[property]][key];
}
}
for (const key in result) {
for (const property in propertyMap) {
if (property in result[key] === false) {
result[key][property] = null;
}
}
}
console.log(result);
/*
{
"Машины и оборудование прочие, не включенные в другие группировки": {
"active": 1,
"inactive": 2
},
"Насосное оборудование, комлектующие, сопутствующие": {
"active": 1,
"inactive": 2
},
"Электродвигатели, генераторы и трансформаторы силовые": {
"active": 1,
"inactive": 2
},
"Средства транспортные прочие, не включенные в другие группировки": {
"active": 1,
"inactive": null
}
}
*/
DirectorySlash Off
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/$0.html -f
RewriteRule .+ /$0.html [L]