Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]Filtr powtarzających się rekordów
Forum PHP.pl > Forum > Przedszkole
perhydrol
posiadam tabele w bazie z zamówieniami
Kod
| id_zam |    id_towar       | id_uzyt    |    nr_zamowienia     | ile_sztuk |    kwota    | data_zam |
|  1       |     2        |    1       |       200906160001   |     1     |      30.00  | 2009-06-15  |
|  2       |     7        |    1       |       200906160001   |     2     |      10.00  | 2009-06-15  |
|  3       |     4        |    1       |       200906160002   |     1     |      40.00  | 2009-06-16  |


(nazwy powyżej skróciłem żeby było bardziej czytelne)

Zależy mi na wyświetleniu następujących danych:

- NR_ZAMOWIENIA
- ŁĄCZNA_KWOTA = [suma(kwota) o takim samym nr_zamowienia]
- DATA_ZAMOWIENIA

zmajstrowałem takie zapytanie ale ono wyświetla mi jedynie NR_ZAMOWIENIA i nie chce nic więcej, nie wiem też w jaki sposób połączyć,
  1. SUM(kwota) AS laczna_kwota WHERE nr_zamowienia LIKE "jest taki sam"

i
  1. SELECT DISTINCT(nr_zamowienia) AS nr_zamowienia FROM zamowienia ORDER BY data_zamowienia ASC


trochę zbyt zaawansowane zapytanie jak dla mnie, pomoże ktoś?

questionmark.gif :/
erix
A nie group by zamiast distinct? (nie dosłownie frazy; rodzaj zapytania)
perhydrol
heh faktycznie, dzięki smile.gif

  1. SELECT * FROM zamowienia GROUP BY nr_zamowienia


a teraz jeszcze jak dorzucić sumę tej kwoty o takim samym nr_zamowienia?
erix
A to już jest w każdym kursie PHP + MySQL [;
perhydrol
heheh, myślałem że bardziej skomplikowanego zapytania trzeba użyć by wyciągnąć te dane, a tu się okazuje odwrotnie

dla potomnych winksmiley.jpg

  1. SELECT *, SUM(kwota) AS kwota FROM zamowienia GROUP BY nr_zamowienia ORDER BY data_zamowienia ASC




Dzięki za pomoc smile.gif

a czy może mi ktoś podpowiedzieć czemu nie mogę wykonać takiego zapytania?

  1. SELECT *, SUM(zamowienia.kwota) AS kwota FROM zamowienia GROUP BY zamowienia.nr_zamowienia JOIN uzytkownik ON uzytkownik.id_uzytkownik = zamowienia.id_uzytkownik JOIN ksiazka ON ksiazka.id_ksiazka = zamowienia.id_ksiazka WHERE nr_zamowienia = '200906160001' ")
erix
Masz złą kolejność komend agregujących.

Ale o tym w kursach/dokumentacji. [;
perhydrol
dzięki, nie zwracałem na to wcześniej uwagi, jeśli chodzi o kolejność, myślałem że wystarczy podać warunek a kolejność nie jest aż tak istotna

czyli:
  1. SELECT *, SUM(zamowienia.kwota) AS kwota FROM zamowienia JOIN uzytkownik ON uzytkownik.id_uzytkownik = zamowienia.id_uzytkownik JOIN ksiazka ON ksiazka.id_ksiazka = zamowienia.id_ksiazka WHERE nr_zamowienia = '200906160001' GROUP BY zamowienia.nr_zamowienia "


dzięki, po raz kolejny... smile.gif


********************************************************************************
********************************************************************************
********************************************************************************

nie chcę zakładać nowego Tematu a mam problem z budową zapytania MYSQL
mianowicie mam takie zapytanie:
  1. SELECT *
  2. FROM ksiazka WHERE id_ksiazka
  3. IN ( SELECT id_ksiazka FROM zamowienia GROUP BY id_ksiazka HAVING COUNT( id_ksiazka ) >1 )
  4. LIMIT 0, 8


tylko chciał bym aby wynik był prezentowany w kolejności od najwiekszej liczby wystapień id_ksiazka

czyli:
  1. SELECT COUNT(id_ksiazka) AS ilosc_wystapien FROM zamowienia GROUP BY id_ksiazka HAVING COUNT( id_ksiazka ) >1 ORDER BY ilosc_wystapien DESC


z tabeli
ZMOWIENIA
Kod
id_zmowienia    |    id_ksiazki     |......
        1       |       8           | ......
        2       |       4           | ......
        3       |       2           | ......
        4       |       4           | ......
        5       |       8           | ......
        6       |       8           | ......


Próbowałem już tak, ale w dalszym ciągu error:
  1. SELECT *
  2. FROM ksiazka WHERE id_ksiazka
  3. IN ( SELECT id_ksiazka FROM zamowienia GROUP BY id_ksiazka HAVING COUNT( id_ksiazka ) >1 )
  4. ORDER BY (
  5. SELECT COUNT(id_ksiazka) AS ilosc_wystapien FROM zamowienia GROUP BY id_ksiazka HAVING COUNT( id_ksiazka ) >1 ORDER BY ilosc_wystapien DESC LIMIT 1
  6. )


będę wdzięczny za jakąkolwiek podpowiedz, bo ogólnie to w dalszym ciągu walczę z opanowanie połączeń zapytań
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.