2015-04-21 52 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中这样做的问题:)多么可怕 –