Запрос для получения значений столбца сотрудников - PullRequest
0 голосов
/ 11 сентября 2018

Я отслеживаю всех сотрудников. Данные представлены в таблице. Заказы ....

Мне нужно выбрать всех сотрудников [имя столбца: имя сотрудника ] Повторная попытка [столбец: reattemptdate ] и значения удержания [колонка: holddat e]

Я хочу отобразить эту информацию в следующем формате:

СотрудникИмя 1: Повторная попытка: Значение повторной попытки: Удержание: Значение удержания

Имя сотрудника 2: Повторная попытка: Значение повторной попытки: Удержание: Значение удержания

пример:

читтаранджан: Reattempet: 20, удержание: 10

Deepak Reattempet: 15, удержание: 5

Я пытался выполнить запрос ниже:

$sql = "SELECT employeename, DATE(reattemptdate) as date, 
COUNT(*) as count, 0 as Held FROM orders 
WHERE DATE(reattemptdate)  = CURDATE() 
GROUP BY employeename, date

UNION

SELECT employeename, DATE(holddate) as date, 
COUNT(*) as count, 1 as Held  FROM orders 
WHERE DATE(holddate)  = CURDATE() 
GROUP BY employeename, date
"; 
$results = $db_handle->runSelectQuery($sql); 
$numrowsresult =$results[0]['count'];

foreach ($results as $result) 
{
    if ($result['Held']==0){
      $header = " Reattempet ";
    } else {
      $header = " hold ";
    }
    echo $result['employeename']."<br>";
    echo $header.": ".$result['count']."<br>";
}

Я получил вывод, как показано ниже:

Читтаранджан Reattempet: 20

Дипак Reattempet: 15

Читтаранджан Hold: 10

Deepak Hold: 5

Какие изменения мне нужны для запроса выше, чтобы получить желаемый результат ....

Редактировать - структура столбца :

enter image description here

Удерживать :

enter image description here

empl

enter image description here:

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Пусть база данных сделает всю работу, она специально для нее сделана

Измените ваш запрос следующим образом:

SELECT CONCAT(employeename,' : Reattempt : ', count_Reattempet, ' : Hold : ', count_Hold) AS concat_header
FROM
(
    SELECT employeename, 
           SUM(CASE WHEN Held = 'Reattempet' THEN 1 ELSE 0 END) AS count_Reattempet,
           SUM(CASE WHEN Held = 'Hold'       THEN 1 ELSE 0 END) AS count_Hold
    FROM
    (
        SELECT employeename, DATE(reattemptdate) as date, 'Reattempet' as Held FROM orders WHERE DATE(reattemptdate)  = CURDATE() 
        UNION
        SELECT employeename, DATE(holddate)      as date, 'Hold'       as Held  FROM orders WHERE DATE(holddate)  = CURDATE() 
    ) A
    GROUP BY employeename
) B

Она вернет столбец concat_header полностью отформатированный, как вы хотите.

chittaranjan : Reattempet : 20 : hold : 10
Deepak Reattempet : 15 : hold : 5

Тогда вам просто нужно сделать это на PHP

foreach ($results as $result) 
{
      echo $result['concat_header']."<br>";
}
0 голосов
/ 11 сентября 2018

Еще один способ сделать это, изменив код:

foreach ($results as $result) 
{
  if ($result['Held']==0){
    $new_array[$result['employeename']][0] = " Reattempet :" . $result['count'];
  } else {
    $new_array[$result['employeename']][1] = " hold :" . $result['count'];
  }
}
foreach ($new_aray as $name => $val)
{
  echo $name . " : " . $val[0] . " : " . $val[1];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...