我无法弄清楚如何从2个表中获得结果,在1个查询结果中(不能简单加入)
我在MySQL数据库中有这两个表:
Table 1: sales
id
name
info
Table 2: users
sale_id
user_id
现在,每次销售都有不同数量的指定用户。一些销售有2个用户,有些销售有10个用户。
在单行中,我需要有sale
表中的列,以及所有已分配给它的用户(使用相同的Sale_id连接)
我需要结果,如下:
答案 0 :(得分:0)
试试这个:
minimizator_weighted ? foo<data_set::pt_weighted>() : foo<data_set::pt>();
答案 1 :(得分:0)
您可以简单地连接两个表并获取如下查询结果集:
saleID | saleName | userID | userName
1 | Oct Sale | 5 | Tim
1 | Oct Sale | 6 | Nik
2 | Nov Sale | 7 | Bill
然后,您可以遍历每一行并根据该数据构建关联数组:
$sales = array();
while( $row = mysqli_fetch_assoc($result)) {
if (!array_key_exists($row['saleID'], $sales)) {
$sales[$row['saleID']] = array(
'saleID' => $row['saleID'],
'saleName' => $row['saleName'],
'users' => array()
);
}
array_push($sales[$row['saleID']]['users'], array(
'userID' => $row['userID'],
'userName' => $row['userName']
));
}
答案 2 :(得分:0)
好吧,MySQL并没有像这样给你一个漂亮的嵌套数组。但是你可以通过循环结果来创建它。假设您的MySQL连接名为public class DateRenderer {
private static final Log log = LogFactory.getLog(DateRenderer.class);
public DateRenderer(){
}
public static Date getDayDate(){
log.info("New Date for test!");
return new Date();
}
}
,请尝试类似
$mysqli
答案 3 :(得分:0)
对您的编程语言的一些见解会很好。 是的,正如wogsland和icoder所建议的那样,人们通常使用连接并循环结果来构建en数组。但正如Yoleth指出的那样,使用GROUP_CONCAT就是你所需要的。我不知道这是否是目标,但它可以减少结果中使用的内存,因为没有行重复。
SELECT info FROM Sales AS s,
(
SELECT sale_id, GROUP_CONCAT(user_id) AS assigned_users
FROM Users
GROUP BY sale_id) AS u
WHERE s.id=u.sale_id;
在单个查询中,使用精彩的JOIN:
SELECT s.info AS info, u.sale_id AS sale_id, GROUP_CONCAT(u.user_id) AS assigned_users
FROM Sales AS s LEFT JOIN Users AS u
ON s.id=u.sale_id
WHERE sale_id IS NOT NULL GROUP BY u.sale_id;