2016-09-05 4 views
0

Я запрашиваю базу данных, созданную бывшим сотрудником, плохо! Я успешно собрал и вывел все необходимые мне данные - однако я хочу сгруппировать данные в номера проблем.Результаты группы, возвращенные из запроса MySQL

На данный момент выход, как это ...

Company 1 
Issue number: 142 
Total: 480.00 

Company 2 
Issue number: 142 
Total: 46 

Company 3 
Issue number: 142 
Total: 240.00 

Company 4 
Issue number: 142 
Total: 420.00 

Company 5 
Issue number: 142 
Total: 468.00 

Company 6 
Issue number: 142 
Total: 252.00 

Я хотел бы, чтобы читать, как ...

**Issue number: 142** 
Company 1 Total 480 
Company 2 Total 468 
etc etc I.e grouping them into issue numbers. 

Вот мой код ...

$sql = " 
SELECT bf_total_cost 
    , bf_date_added 
    , ib_issue_number 
    , companyname 
    , contacts_id 
    , bf_id 
    , bf_company_id 
    , ib_booking_form_number 
    FROM contacts 
    , booking_form 
    , issues_booked 
WHERE ib_issue_number >= 141 
    AND ib_issue_number <= 165 
    AND bf_date_added >= '2014-11-01' 
    AND bf_date_added <= '2016-08-31' 
    AND contacts_id = bf_company_id 
    AND bf_id = ib_booking_form_number 
ORDER 
    BY ib_issue_number ASC; 
"; 

$result = mysql_query($sql) or die (mysql_error()); 

$row = mysql_fetch_array($result) or die (mysql_error()); 
while($row = mysql_fetch_array($result)) { 

echo '<ul>'; 
echo '<li>'.$row['companyname'] .'</li>'; 
echo '<li>'.$row['ib_issue_number'] .'</li>'; 
echo '<li>'.$row['bf_total_cost'] .'</li>'; 
echo '</ul>'; 
} 
+0

Я d хотели бы показать, сколько каждая компания потратила на каждую проблему. – webcreator25

+0

'while ($ row = mysql _...) {$ groupedArray [$ row ['номер выпуска]] [] = $ row;}'. –

+0

Вы хотите, чтобы номер проблемы отображался один раз. Правильно? –

ответ

0

Вы можете создать вложенную/сгруппированных массив в цикле while в то время как вы запрашиваете строки из результата:

$result = mysql_query($sql) or die (mysql_error()); 

$groupedArray = array(); 
while($row = mysql_fetch_assoc($result)) { 
    $groupedArray[$row['ib_issue_number']][] = $row; 
} 

Вы можете затем вывести его в виде вложенного списка HTML:

echo "<ul>"; 
foreach ($groupedArray as $issueNumber => $group) { 
    echo "<li>issue number: $issueNumber <ul>"; 
    foreach ($group as $row) { 
     echo "<li>Company: {$row['companyname']}; Total {$row['bf_total_cost']}</li>"; 
    } 
    echo "</ul></li>"; 
} 
echo "</ul>"; 
+0

Большое вам спасибо! – webcreator25

+0

Есть ли способ показать £ 0,00, если проблема не была забронирована? I.Е если вопрос не был забронирован, он все равно имеет значение для создания полного списка проблем, а не только для тех, у кого есть заказ? – webcreator25

+0

Что значит «Проблема не была забронирована» с точки зрения данных? Какой столбец имел бы ценность? Hpwever, звучит как базовая задача программирования wis-if-condition. –

0

Использование агрегации в MySQL:

SELECT sum(bf_total_cost) ... GROUP BY ib_issue_number, bf_company_id 

Это будет группировать каждую строку по номеру выпуска и идентификатору компании. Затем sum() вернет общую стоимость каждой группировки.

Если вы хотите просто сгруппировать по номеру проблемы, удалите bf_company_id из группы.

+0

Привет @Devon это звучит так, как будто вы знаете, что я пытаюсь сделать, но он все еще не работает, можете ли вы поместить свое слово в скрипку? – webcreator25

+0

Вам нужно предоставить дополнительную информацию о том, что не работает. Если вы недостаточно знакомы с PHP или MySQL, то я действительно не могу с этим поделать. – Devon

+0

Как вывести то, что вы упомянули ... так что я получил: '$ SQL =«SELECT SUM (bf_total_cost), bf_date_added, ib_issue_number, COMPANYNAME, contacts_id, bf_id, bf_company_id, ib_booking_form_number \t из списка контактов, booking_form, issues_booked \t GROUP BY ib_issue_number \t ГДЕ ib_issue_number> = '141' И ib_issue_number <= '165' И bf_date_added> = '2014-11-01' И bf_date_added <= '2016-08-31' И contacts_id = bf_company_id И bf_id = ib_booking_form_number \t \t ORDER BY ib_issue_number ASC ";' Как это сделать? – webcreator25

Смежные вопросы