Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z distinct
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
pero
Witam
mam pewnien problem z zapytaniem
  1. SELECT nadbranza.id_nadbranza, nadbranza.nazwa, count(nadbranza.id_nadbranza) AS ilosc
  2. FROM nadbranza,branza,dostawca_branza,dostawca WHERE branza.id_nadbranza=nadbranza.id_nadbranza AND dostawca_branza.id_branza=branza.id_branza AND dostawca.id_dostawca=dostawca_branza.id_dostawca AND dostawca.id_dostawca>0
  3. GROUP BY nadbranza.id_nadbranza,nadbranza.nazwa


Chodzi o to ze potrzebuje wylistować wszystkie nadbranze oraz liczbe dostawców nalezacych do nadbranz. Dostawcy sa przypisani do wielu podbranz a kazda podbranza ma id do nadbranzy.
To zapytanie dziala tak ze listuje mi wszystkich dostawcow z danej nadbranzy ale liczy kilka razy tego samego dostawce jesli jest przypisany do kilku podbranz.
Nie wiem jak zrobic zeby liczyl tylko kazdego dostawce tylko raz nawet jesli nalezy do kliku podbranz danej nadbranzy.

Proszę o pomoc.
Pozdrawiam.
Sedziwoj
Spróbuj tak:
  1. SELECT
  2. nadbranza.id_nadbranza,
  3. nadbranza.nazwa,
  4. count(nadbranza.id_nadbranza) AS ilosc
  5. FROM nadbranza LEST JOIN ( SELECT DISTINCT b.id_nadbranza,
  6. d.id_dostawca
  7. FROM branza AS b
  8. LEFT JOIN dostawca_branza AS db ON db.id_branza = b.id_branza
  9. LEFT JOIN (SELECT * FROM dostawca WHERE id_dostawca>0) AS d ON d.id_dostawca = db.id_dostawca
  10. ) AS branza_2 ON branza_2.id_nadbranza=nadbranza.id_nadbranza
  11. GROUP BY
  12. nadbranza.id_nadbranza,
  13. nadbranza.nazwa


(to automatyczne formatowanie chyba się nie nadaje do bardziej złożonych zapytań)
pero
Dzieki Sedziwoj
zapytanie działa prawie dobrze. wszytko jest ok jesli jest conajmniej jeden dostawca w kazdej z nadbranzy, jesli nie ma to tez wyswietla ze liczba dostawców w nadbranzy wynisi 1 chociaz nie ma ani jednego.
Sedziwoj
Zamień
  1. LEFT JOIN (SELECT * FROM dostawca WHERE id_dostawca>0) AS d ON d.id_dostawca = db.id_dostawca

na
  1. JOIN (SELECT * FROM dostawca WHERE id_dostawca>0) AS d ON d.id_dostawca = db.id_dostawca

Powinno pomóc
pero
nie pomogło sad.gif
nie do konca rozumiem takich skorelowanych zapytan wiec nie potrafie sam go poprawic :/
Sedziwoj
A mi brakuje, aby coś spróbować, bo nie zawsze pamięta się wszystkich rzeczy, nie lubię być impreterem ;]
  1. count(branza_2.id_dostawca) AS ilosc

może tak
pero
dzieki smile.gif teraz smiga 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.