2013-04-21 170 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