Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sortowanie sklepów
Forum PHP.pl > Forum > Bazy danych > MySQL
Michu
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?
nevt
spróbuj
  1. ... FROM transakcje RIGHT JOIN sklepy ON ...
Michu
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?
nevt
zmień jeszcze...
  1. ... GROUP BY sklepy.id ...
Michu
działa, dzięki! Masz u mnie "pomógł"a smile.gif
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.