我正在尝试创建一个页面,其中列出了在不同月份销售商品的所有用户,但每个用户都可以在该月的不同日期销售商品。这就是我想要得到的。
January
user 1
user 4
user 5
February
user 4
user 2
user 3我设法让它列出月份,但它每个月只显示一个用户。例如
January
user 1
February
user 4以下是我的代码
$sql = "SELECT * FROM users INNER JOIN items ON users.id = items.user_id GROUP BY Year(items.sold_date), Month(items.sold_date)";
$result = mysqli_query($con, $sql);
$mnt = "";
while($row = mysqli_fetch_array($result))
{
if($row['sold_date'] != $mnt)
{
echo date('F, Y', strtotime($row['order_date']));
echo "<br/>";
}
echo $row['name'];
}我的用户表
id | name | lastname
1 | user 1 | user 1 lastname
2 | user 2 | user 2 lastname
3 | user 3 | user 3 lastname
4 | user 4 | user 4 lastname
5 | user 5 | user 5 lastname 我的项目表
id| name |description | user_id | sold_date
1 | item 1 | item 1 description | 3 | 2017-01-25
2 | item 2 | item 2 description | 1 | 2017-01-30
3 | item 3 | item 3 description | 5 | 2017-02-14
4 | item 4 | item 4 description | 2 | 2017-05-01
5 | item 5 | item 5 description | 1 | 2018-09-06
6 | item 6 | item 6 description | 4 | 2018-10-23我希望我的解释是正确的。如果没有,请告诉我。
发布于 2019-05-31 22:39:12
如果您想在一行中打印带有分隔符的in,我建议您使用GROUP_CONCAT()。查询将如下所示:
SELECT
Year(items.sold_date) as 'Year Sold',
Month(items.sold_date as 'Month Sold',
GROUP_CONCAT(distinct users.id) as 'Unique User Ids'
FROM users
INNER JOIN items
ON users.id = items.user_id
GROUP BY
Year(items.sold_date),
Month(items.sold_date);如果您希望在每年/每月的几行中获得所需的结果,您可以通过以下方式将users.id列添加到您的组中:
SELECT * FROM users
INNER JOIN items
ON users.id = items.user_id
GROUP BY
Year(items.sold_date),
Month(items.sold_date),
users.id;发布于 2019-06-01 03:47:30
这看起来像是给了你想要的输出。
$sql = '
SELECT
YEAR(I.sold_date) sold_date_Y,
MONTH(I.sold_date) sold_date_M,
U.name,
COUNT(I.user_id)
FROM users
AS U
INNER JOIN items
AS I
ON I.user_id = U.id
GROUP BY
YEAR(I.sold_date),
MONTH(I.sold_date),
U.name
ORDER BY
YEAR(I.sold_date),
MONTH(I.sold_date),
U.name';
$result = mysqli_query($con, $sql);
$savYM = '';
while($row = mysqli_fetch_array($result)){
$curYM = $row['sold_date_Y'].'-'.$row['sold_date_M'];
if($curYM != $savYM){
echo '<br/>'. date('F, Y', strtotime($curYM)) .'<br/>';
}
echo $row['name'].'<br/>';
$savYM = $curYM;
}https://stackoverflow.com/questions/56396442
复制相似问题