Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> skomplikowane zapytanie, rozwiazanie juz jest
AxZx
post 26.09.2006, 20:40:30
Post #1





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


witam

wiem ze troche gupie posty pisze;) i moze zbyt skomplikowane, moze jednak ktos widzi blad i pomoze mi rozwiklad kolejna zagadke.

zapytanie wyglada tak:
  1. SELECT k.*,
  2. (SELECT count(*) AS ile FROM rodzaj_towar AS rt
  3. LEFT JOIN towary AS t ON (t.tow_id = rt.tow_id AND t.tow_status = 1 AND t.tow_pokaz = 1 AND t.kat_id = k.kat_id)
  4. INNER JOIN uzytkownicy AS u ON (u.u_id = t.u_id AND u.u_edycja = 1 AND u.u_status = 1)) AS ile_t
  5. FROM kategorie AS k
  6. ORDER BY k.kat_kolejnosc ASC


a przynajmniej wynik takiego zapytania chcialbym otrzymac:)
zapytanie ma zwrocic nazwy kategorii oraz ilosc towarow przypisanej do tej kategorii
blad wywala w miejscu:
  1. AND t.kat_id = k.kat_id

ze niby nie ma kolumny k.kat_id
to jak w takim razie odwolac sie do tej kolumny co jest poza LEFTJOINEM i poza podzapytaniem?

pozdrawiam madre glowy:)

Ten post edytował AxZx 27.09.2006, 09:15:20


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
Skobi
post 26.09.2006, 21:08:39
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 1
Dołączył: 19.02.2004

Ostrzeżenie: (10%)
X----


nie wiem czy taka pomoc Cie zadowala, ale ja bym to napisal mniej wiecej tak:

  1. SELECT k.id, k.kategoria, count(t.id_towar) AS ile_t
  2. FROM kategoria k LEFT OUTER JOIN towar t ON k.id_kategoria = t.id_kategoria
  3. GROUP BY
  4. k.id_kategoria, k.kategoria


moze nie jest to dokladnie identyczny przyklad, natomiast mysle, ze w bardzo prosty sposob
mozna to przerobic do Twojej postaci. Bardzo chetnie bym napisal to zapytnie cale natomiast nie mam
struktury bazy danych
Go to the top of the page
+Quote Post
gszesiek
post 26.09.2006, 21:08:42
Post #3





Grupa: Zarejestrowani
Postów: 152
Pomógł: 1
Dołączył: 17.09.2006

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


to może to "FROM kategorie AS k" daj wcześniej, zanim się odwołasz to "k"
(oczywiście o ile resztę masz dobrze winksmiley.jpg )


--------------------
Go to the top of the page
+Quote Post
AxZx
post 26.09.2006, 23:31:17
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


to by bylo proste gdyby nie bylo tabeli w ktorej jest tow_id i rodzaj_id
tow_id moze miec zalozmy 2 rodzaje, wiec wtedy beda 2 towary

struktura bazy jest mniej wiecej opisana w temacie
http://forum.php.pl/index.php?showtopic=54237
zastosowalem sie do rady sf i zrobilem 2 dodatkowe tabele w ktorych sa towary, rodzaje i laczenie towarow z rodzajem.

EDIT:
zalzawionymi oczami patrzac na monitor napisalem takie o to zapytanie ktore dalo mi wynik taki jaki chcialem, byc moze jest on od d... strony napisany, ale nie umiem inaczej w tej chwili.

  1. SELECT count(t.kat_id) AS ile_t, k.*
  2. FROM rodzaj_towar AS rt
  3. LEFT JOIN towary AS t ON (t.tow_id = rt.tow_id AND t.tow_status = 1 AND t.tow_pokaz = 1)
  4. INNER JOIN uzytkownicy AS u ON (u.u_id = t.u_id AND u.u_edycja = 1 AND u.u_status = 1)
  5. RIGHT JOIN kategorie AS k ON (k.kat_id = t.kat_id) GROUP BY k.kat_id ORDER BY k.kat_kolejnosc


Ten post edytował AxZx 26.09.2006, 23:52:03


--------------------
aplikacje internetowe | Symfony
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: 22.06.2025 - 17:33