Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z distinct
pero
post 23.05.2008, 09:57:30
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 17.02.2007

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


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.
Go to the top of the page
+Quote Post
Sedziwoj
post 23.05.2008, 12:56:59
Post #2





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


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ń)


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
pero
post 23.05.2008, 14:48:12
Post #3





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 17.02.2007

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


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.
Go to the top of the page
+Quote Post
Sedziwoj
post 23.05.2008, 14:58:24
Post #4





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


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


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
pero
post 23.05.2008, 15:05:17
Post #5





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 17.02.2007

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


nie pomogło sad.gif
nie do konca rozumiem takich skorelowanych zapytan wiec nie potrafie sam go poprawic :/
Go to the top of the page
+Quote Post
Sedziwoj
post 23.05.2008, 15:37:26
Post #6





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


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


--------------------
Algorytmy w PHP, czy ktoś o tym słyszał?
Dlaczego tak mało kobiet programuje? ponieważ nie zajmują się głupotami.
Go to the top of the page
+Quote Post
pero
post 23.05.2008, 15:47:06
Post #7





Grupa: Zarejestrowani
Postów: 91
Pomógł: 0
Dołączył: 17.02.2007

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


dzieki smile.gif teraz smiga smile.gif

Ten post edytował pero 28.05.2008, 12:37:08
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 Wersja Lo-Fi Aktualny czas: 20.04.2024 - 01:02