2013-04-21 180 views
0

我有2个表遍历一个MySQL结果集:需要帮助的在PHP

Institute: 
----------- 
id  name   city 
----- -------  ------- 
1  Name 1  London  
2  Name 2  Leeds 
3  Name 3  Edinburgh 

Course: 
-------- 
id  i_id  name      stream 
----- ----- --------------------  ------- 
1  1  Computer Engineering  Engineering 
2  1  Chemical Engineering  Engineering 
3  2  Electronics Engineering Engineering 
4  3  Mechanical Engineering Engineering 

我需要在我的ResultSet以下信息:

  1. 研究院提供工程课程(名称1,名称2 ,名称3)。
  2. 该研究所提供的所有课程。

现在,这是我的查询实现这个结果集:

SELECT institute.id, institute.name AS i_name, institute.city, course.name AS c_name 
FROM institute, course 
WHERE institute.id = course.i_id 
AND course.stream = 'Engineering' 
ORDER BY institute.id 

该查询返回了我4个记录:

id  i_name  city   c_name 
---  -------  ---------  ---------------- 
1  Name 1  London   Computer Engineering 
1  Name 1  London   Chemical Engineering 
2  Name 2  Leeds   Electronics Engineering 
3  Name 3  Edinburgh  Mechanical Engineering 

我怎么能遍历这个结果集,使我得到在网页上方显示数据:

Found 3 Institutes 
---------------------- 
1) Name 1, London 
    Courses Offered:- 
    => Computer Engineering 
    => Chemical Engineering 

2) Name 2, Leeds 
    Courses Offered:- 
    => Electronics Engineering 

3) Name 3, Edinburgh 
    Courses Offered:- 
    => Mechanical Engineering 

[ADDED]

我有分页设置我的网页上。现在让我们说我想每页显示2条记录我将用LIMIT 0,2运行上述查询。现在显然前两个记录在我的查询中给了我同样的研究所,所以在这种情况下,我也需要第三个研究所。

我能做出这样一个动态查询?

+0

也许你可以这个问题限制到第一点,使另一个问题后来这里覆盖加点?这会更容易,因为你的第一个问题已经给出了答案。 – didierc 2013-04-21 14:10:47

+0

事实上,你甚至不需要等待这个问题才能问一个答案,然后再问另一个问题...... – didierc 2013-04-21 14:13:00

回答

0

像这样的东西应该工作:

$currentInstitute = null; 
$i = 1; 
while($row = mysql_fetch_object($query)) { 
    if($row->i_name != $currentInstitute) 
    echo $i++.") $row->i_name, $row->city\n Courses offered:-\n"; 
    $currentInstitute = $row->i_name; 
    echo " => $row->c_name\n"; 
} 
+0

感谢您的回复。 – 2013-04-21 14:39:20