2013-11-18 3 views
0

Используется Jpgraph для рисования сгруппированной гистограммы с использованием значений таблицы Sql. Вот моя таблица, из которой следует нарисовать график. (Отображаются не все данные)Запрос Sql для рисования сгруппированной гистограммы с Jpgraph

---------------------------------------- 
|    student    | 
---------------------------------------- 
| user_ID    | category | 
---------------------------------------- 
| MPhil/FT/2011/021 | Full Time | 
| MPhil/PT/2013/011 | Part Time | 
| MPhil/PT/2012/015 | Part Time | 
| MPhil/FT/2012/024 | Full Time | 
| MPhil/FT/2013/026 | Full Time | 
| MPhil/PT/2011/030 | Part Time | 
---------------------------------------- 

сгруппированных гистограмме можно сделать из этого, где ось абсцисс показывает год 2011, 2012, 2013 и т.д. в user_id и типа категории «Full Time» или " Неполная занятость'. Например, для no.of user_ID, у которых в 2011 году два бара должны быть отрисованы отдельно для подсчета «Full Time» и «Part Time». А затем на год 2012 и т. Д. Как написать SQL-запрос для этого? Могу ли я использовать LIKE для получения года? Чтобы получить полный график времени и времени для рисования простой гистограммы, SQL-запрос;

"SELECT count(*) AS num_rows, category FROM student WHERE category ='Full Time' or category= 'Part Time' GROUP BY category" 

Как изменить этот запрос, чтобы нарисовать сгруппированную гистограмму, как описано выше? Как получить год в user_ID и Full Time, подсчет времени в зависимости от года? (Есть больше лет, не только 2011,2012,2013)

ответ

0

Нашли решение. Написал два запроса, чтобы их не было. студентов, связанных с полной занятостью в каждом году, и ни одного учащегося, связанного с неполным рабочим днем ​​в каждом году.

$sql = mysql_query("SELECT count(*) AS num_rows,LEFT(Right(user_ID,8),4) FROM student WHERE category ='Full Time' GROUP BY LEFT(Right(user_ID,8),4)") or die(mysql_error()); 
while($row = mysql_fetch_array($sql)) 
{ 
$data1[] = $row['num_rows']; 
$leg[] = $row['LEFT(Right(user_ID,8),4)']; 
} 

$sql2 = mysql_query("SELECT count(*) AS num_rows,LEFT(Right(user_ID,8),4) FROM student WHERE category ='Part Time' GROUP BY LEFT(Right(user_ID,8),4)") or die(mysql_error()); 
while($row2 = mysql_fetch_array($sql2)) 
{ 
$data2[] = $row2['num_rows']; 
$leg[] = $row2['LEFT(Right(user_ID,8),4)']; 
} 

Так вот половина кода сгруппированных гистограмме

$bplot1 = new BarPlot($data1); 
$bplot1->SetFillColor("red"); 
$bplot2 = new BarPlot($data2); 
$bplot2->SetFillColor("blue");