我有以下2个表格:
表1:用户
id s_id first_name last_name
----------------------------------
1 2 test test
2 2 hello test
3 2 now hello
4 1 john smith
表2:部分
id section_name
-------------------
1 first
2 my section
3 other section
基于以上两个表,我想写一个MYSQL查询:
从用户表和GROUP THEM BY s_id(SAME s_id)中选择ALL,我该怎么做?
我想将所有s_id = 2 ALL组合在一起作为数组或对象,但由s_id控制?所以我会遍历s_ids并打印出名字和姓氏?
以下是输出示例:
$sections = array['my section'](array('first_name'=>'test' , 'last_name'=>'test'),
array('first_name'=>'hello' , 'last_name'=>'test'),
array('first_name'=>' now' , 'last_name'=>'hello'))
感谢
答案 0 :(得分:2)
简单地
SELECT * FROM `user` GROUP BY `s_id`
但是你的标题和内容都有不同的问题。
所以你在PHP中想要的是这样的:
while($row = your sql fetch)
{
$array[$row['s_id']][] = array('first_name' => $row['first_name'], 'last_name' => $row['last_name']);
}
print_r($array);
答案 1 :(得分:0)
如果您需要s_id = 2
以下的所有用户:
SELECT * FROM `user` where `s_id` = 2 # this will give 3 users
否则如果你与s_id
分组,每个部分只会有一个用户,我认为你不想要那个
要显示全部,而不是必须运行查询:
SELECT user.*, section.section_name FROM `user`
INNER JOIN section ON section.id = user.s_id
在PHP中欺骗它:
$query = "
SELECT
user.*,
section.section_name
FROM `user`
INNER JOIN section
ON section.id = user.s_id
";
$result = mysqli_query($conn, $query);
$final_data = array();
while($data = mysqli_fetch_assoc($result))
{
$final_data[$data['section_name']][] = $data;
}
print($final_data); // to see the result
答案 2 :(得分:0)
在php中查看mysqli_fetch_array
函数。
您需要使用此php函数循环查询结果并将它们放入数组中,您不需要在sql中对任何内容进行分组,但仅限于:
select * from user order by s_id
在php循环中,您可以根据需要填充数组。