Я создал страницу, на которой я хотел бы сгруппировать эти группы по годам и месяцам, а затем сгруппировать пользователей по этому месяцу и сгруппировать элементы по пользователю, купившему элемент.Так бы это выглядело примерно так
january 2018
user 1 -> item 1
-> item 5
-> item 7
user 4 -> item 2
-> item 1
user 7 -> item 6
и т. Д.
Я чувствую, что я рядом и, может быть, просто упускаю что-то простое, вот мой код
$sql = '
SELECT
i.*, o.*, oi.*, u.*, YEAR(o.sold_date) sold_date_Y, MONTH(o.sold_date) sold_date_M, u.name, COUNT(o.user_id)
FROM items i
INNER JOIN order_items oi ON i.id = oi.item_id
INNER JOIN orders o ON o.id = oi.order_id
INNER JOIN users u ON u.id = o.user_id
GROUP BY YEAR(o.sold_date), MONTH(o.sold_date), u.name, i.title
ORDER BY YEAR(o.sold_date), MONTH(o.sold_date), u.name, i.title
';
$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/>';
echo $row['title'].'<br/>';
$savYM = $curYM;
}
Это выводит 50% правильно, все сгруппировано по месяцам и годам, но после этого я получаю дублирующих пользователей, так что в итоге это выглядит так
january 2018
user 1 -> item 1
user 7 -> item 6
user 1 -> item 5
user 4 -> item 2
user 1 -> item 7
user 4 -> item 1