Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Sortowanie sklepów, układanie sklepów według obrotów
Michu
post
Post #1





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 15.10.2006
Skąd: zewsząd :P

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


Mam problem z zapytaniem, które miałoby wyświetlać sklepy według łącznej wartości przedmiotów sprzedanych w sklepie. Struktura tabel jest następująca:

tabelka sklepy: shopid, name
tabelka transakcje: id, shop, prise

zapytanie jakie napisałem jest następujące:
  1. SELECT transakcje.shop, sklepy.name, SUM(prise) AS obroty
  2. FROM transakcje INNER JOIN sklepy ON transakcje.shop = sklepy.shopid
  3. GROUP BY transakcje.shop
  4. ORDER BY obroty DESC


Problem z zapytaniem jest taki, że w wynikach nie pojawiają się te sklepy które nie mają żadnego wpisu w tabeli transakcje (tam gdzie obroty = 0). Jak można rozwiązać ten problem?

Ten post edytował Michu 29.12.2007, 13:57:52
Go to the top of the page
+Quote Post
nevt
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


spróbuj
  1. ... FROM transakcje RIGHT JOIN sklepy ON ...


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

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
Michu
post
Post #3





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 15.10.2006
Skąd: zewsząd :P

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


Hmm... dziwna sprawa. Zapytanie działa, ale nie całkiem tak jak powinno.
Sytuacja jest taka:
tabelka sklepy:
id | name
1 | Sklep1
2 | Sklep2
3 | Sklep3

tabelka transakcje:
id | shop | prise
1 | 1 | 1000
2 | 1 | 1234

Kiedy wywołamy zapytanie:
  1. SELECT transakcje.shop, sklepy.name, SUM(prise) AS obroty
  2. FROM transakcje RIGHT JOIN sklepy ON transakcje.shop = sklepy.shopid
  3. GROUP BY transakcje.shop
  4. ORDER BY obroty DESC


shop| name| obroty
1 | Sklep1 | 2234
NULL | Sklep2 | NULL


Zauważcie, że mysql pomija trzeci sklep. Gdy zamienimy
  1. SELECT transakcje.shop
na
  1. SELECT sklepy.shopid
to NULL przed Sklep2 zamienia się na 2. Poza tym nie zdołałem wnieść niczego twórczego do zapytania. Może jest jakiś inny sposób?
Go to the top of the page
+Quote Post
nevt
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


zmień jeszcze...
  1. ... GROUP BY sklepy.id ...


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

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
Michu
post
Post #5





Grupa: Zarejestrowani
Postów: 108
Pomógł: 0
Dołączył: 15.10.2006
Skąd: zewsząd :P

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


działa, dzięki! Masz u mnie "pomógł"a smile.gif
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:14