PHP和MySQL - >显示数据

时间:2015-04-21 19:46:41

标签: php mysql

我已经成功完成了我的第一步(link to my G+ post,但你不必阅读它。一切都在这里)。现在有一些并发症。这是演示表:

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>?

2 个答案:

答案 0 :(得分:0)

好的,我一直在玩这个,我得到了它

您希望按用户ID和年龄进行分组,以便可以对具有特定用户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

答案 1 :(得分:0)

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

SELECT Age, GROUP_CONCAT(Name)
FROM grades
WHERE userid=1
GROUP BY Age