Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MYSQL]Filtr powtarzających się rekordów
perhydrol
post
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 11.12.2006

Ostrzeżenie: (0%)
-----


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 :/

Ten post edytował perhydrol 16.06.2009, 20:48:30
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A nie group by zamiast distinct? (nie dosłownie frazy; rodzaj zapytania)


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
perhydrol
post
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 11.12.2006

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A to już jest w każdym kursie PHP + MySQL [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
perhydrol
post
Post #5





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 11.12.2006

Ostrzeżenie: (0%)
-----


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' ")
Go to the top of the page
+Quote Post
erix
post
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Masz złą kolejność komend agregujących.

Ale o tym w kursach/dokumentacji. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
perhydrol
post
Post #7





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 11.12.2006

Ostrzeżenie: (0%)
-----


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ń

Ten post edytował perhydrol 20.06.2009, 15:16:51
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 13:44