Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: hej pomocy co z tym postgre
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
truvati
witam smile.gif

tabela1: kategoria
1 id_kat
2 kategoria

tabela2: foto
1 id_foto
2 id_kat

  1. SELECT kategoria.kategoria, kategoria.id_kat, count( foto.id_foto ) AS ile
  2. FROM foto INNER JOIN kategoria ON kategoria.id_kat = foto.id_kat
  3. GROUP BY foto.id_kat


prosze uzywac odpowiednich tagów w tym wypadku [ sql ]
alek


i kupa ... : ERROR: column "kategoria.kategoria" must appear in the GROUP BY clause or be used in an aggregate function

a kurcze jak w takim wypadku mam wyciągnac te dane questionmark.gif przez dwa zapytania questionmark.gif
nie kumam .. w innych bazach to śmiga bez problemu questionmark.gif co jest nie tak questionmark.gif

pozdro for all
SongoQ
  1. SELECT kategoria.kategoria, kategoria.id_kat, count(foto.id_foto) AS ile
  2. FROM foto INNER JOIN kategoria ON kategoria.id_kat=foto.id_kat
  3. GROUP BY foto.id_foto, kategoria.kategoria, kategoria.id_kat
truvati
i jeszcze większa kupa exclamation.gif!!!!!


wynik tego zapytania to

kategoria id_kat ile
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1
fantasy 1 1


a powinno pokazać
fantasy (kategoria) |1 (id_kat) | 30 (ile)


czy naprawde w postgre tak prostego zapytania nie można wykoanać tak łatwo ....?
jeżeli tak to porażka..

może ktoś jeszcze ma jakiś pomysł .. inaczej trzeba to będzie na dwa zapytania rozbic.... a zapytanie z countem to chyba klasyk jeżeli chodzi o sql
SongoQ
To zastanow sie co chcesz osiagnac. Jesli masz funkcje agregacji to musisz reszte pol powturzyc w group by aby zapytanie skladniowo bylo poprawne i logicznie.

Jesli chesz zrocic ilosc foto dla danej kategorii to:

  1. SELECT kategoria.kategoria, COUNT(foto.id_foto) AS ilosc
  2. FROM kategoria LEFT JOIN foto ON (kategoria.id_kat = foto.id_kat)
  3. GROUP BY kategoria.kategoria
truvati
a wcale nie ... przykład jest banalny, dzisiaj dokładnie się dowiedziałem co i jak ... mysql nie wymaga myślenia przy pisaniu zapytań, postgre tak... i całe szczęście... przesiadam się na postgre

  1. SELECT kategoria.kategoria,kategoria.id_kat, count(foto.id_foto) AS ilosc_fot
  2. FROM kategoria INNER JOIN foto ON kategoria.id_kat=foto.id_kat
  3. GROUP BY kategoria.kategoria,kategoria.id_kat


tak wygląda zapytanie działające poprawnie w postgre... troszkę inna logika myślenia niż mysql...
SongoQ
Zapytanie jest poprawne. Do mojego przykladu wystarczylo uzyc dodatkowego grupowania.

Odnosnie nazwewnictw to nie postgre tylko postgresql lub postgres. A co do myslenia to to samo zapytanie masz w MySQL, myslalenie sie dopiero zaczyna jak Ci wydajnosc spada i uzywasz podzapytan, funkcji i triggerow
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.