SQL - grupowanie wyników - miesieczne zestawienie zamówień użytkownika.

0

Mam problem ze skonstruowaniem poprawnego zapytania SQL w takim przypadku:

Tabele:
-users(id, name);
-orders(id, user_id, date, price)

Users i orders są połączone relacją jak widać wyżej. Chiałbym wyświetlić listę: miesiąc(data ostatniego dnia), nazwa użytkownika, łączna kwota zamówien i ich liczba.

Robię to w ten sposób:

SELECT
    LAST_DAY(orders.date) as `date`,
    SUM(orders.price) as `sum`,
    COUNT(*) as `count`
    users.name as `username`
FROM users
JOIN orders ON users.id = orders.user_id
GROUP BY `date`

Jednak coś jest nie tak, bo czasem pole date jest zduplikowane dla nazwy użytkownika. W sensie mam dwie takie same grupy data - użytkownik. Co zrobiłem źle? :)

1

Źle pogrupowałeś. A to badziewny MySQL, więc przeszło... Włącz sobie SQL_MODE=ANSI

SELECT
    LAST_DAY(orders.DATE) AS `date`,
    SUM(orders.price) AS `sum`,
    COUNT(*) AS `count`
    users.name AS `username`
FROM users
JOIN orders ON users.id = orders.user_id
GROUP BY LAST_DAY(orders.DATE), users.name
0

Powiedzmy, że w tabeli Orders mam pole premiumOrder typu bool. Jak pokazać jedynie użytkowników którzy mają conajmniej jeden(kiedykolwiek) premiumOrder? :)

0

Podstawy. JOIN + DISTINCT

1 użytkowników online, w tym zalogowanych: 0, gości: 1