2015-04-21 49 views
0

我已經成功地完成了我的第一步(link to my G+ post,但你不必閱讀它,一切都在這裏)。現在有一些併發症。這是演示表:PHP和MySQL - >顯示數據

 
ID | userid | Age | Name 
--------------------------- 
1 | 1  | 30 | John 
2 | 1  | 31 | Mike 
3 | 1  | 30 | Whoever 
4 | 2  | 32 | Jack 
5 | 2  | 31 | Alice 
6 | 3  | 30 | Kurt 

我想與同齡userid = 1 +者僅顯示行必須在同一行中:

userid  | Age | Name 
--------------------------------- 
1 (hidden) | 30 | John, Whoever 
1 (hidden) | 31 | Mike 

在我的數據庫我使用subjectgrade而不是agename。這是我的MySQL查詢的外觀現在:

SELECT 
p.subject as 'subject' 
GROUP_CONCAT(grade) as grades 
FROM grades p 
GROUP BY p.subject 

這對每個userid顯示數據。 Userid並不總是1,所以我不能只說if($userid == 1){/*code*/}else{/*code*/}或類似的東西。

我該如何做到這一點?


我用來顯示數據的一些PHP代碼:

<?php 
$result = $dbc->query(" 
SELECT 
p.subject as 'subject', 
id, finished, date, 
GROUP_CONCAT(grade) as names 
FROM grades p 
GROUP BY p.subject 
"); 
?> 
<table> 
<tr> 
    <th>Subject</th> 
    <th>Grade</th> 
</tr> 
<?php while($row = $result->fetch_assoc()){ 
    $names = split(",",$row["names"]); 
?> 
    <tr> 
     <td><?php echo $row["subject"] ?> </td> 
     <td><?php foreach($names as $name){echo $name . ' ' ; } ?> 
    </tr> 

<?php } ?> 
</table>? 

回答

0

好,我一直在玩這個周圍,我已完成了

雙方看起來要組用戶ID和年齡,以便您可以對具有特定用戶標識和年齡的數據執行彙總。

我已經包含了創建表格和插入數據的代碼,因此任何閱讀這個問題的人都希望快速玩遊戲。

create table grades 
(
id int(2), 
userid int(2), 
age int(2), 
name varchar(20), 
) 

insert into grades values 
(1,1,30,'John'), 
(2,1,31,'Mike'), 
(3,1,30,'Whoever'), 
(4,2,32,'Jack'), 
(5,2,31,'Alice'), 
(6,3,30,'Kurt'); 

SELECT 
userid, age, GROUP_CONCAT(name) 
FROM grades 
GROUP BY userid, age 
+0

。這有什麼用處? –

0

http://sqlfiddle.com/#!9/7d9ac/3

SELECT Age, GROUP_CONCAT(Name) 
FROM grades 
WHERE userid=1 
GROUP BY Age 
當然你比如你可以從SELECT子句忽略用戶ID,但輸出將是相同的,但會忽略用戶ID列
+0

哇希望我會知道SQL小提琴之前,我回答了我在phpmyadmin中這樣做的問題:)多麼可怕 –