Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] JOIN i GROUP BY
Forum PHP.pl > Forum > Bazy danych
Morfi
Witam!

Moi admini dokonali "upgradu" serwera baz danych (na 5.0.33) i mam problem z jednym zapytaniem:

  1. SELECT B1.idJst, J1.skrot, sum(B1.kwota) , v20072 FROM wr_budzet AS B1, wr_jst J1 LEFT JOIN (SELECT idJst, sum(kwota) AS v20072 FROM wr__budzet WHERE rok=20072 AND (typD='Wynagrodzenia' OR typD='Biezace' OR typD='Inwestycje' ) GROUP BY idJst) AS B2 ON B1.idJst=B2.idJst WHERE J1.id=B1.idJst AND B1.rok=20071 AND ( B1.typD='Wynagrodzenia' OR B1.typD='Biezace' OR B1.typD='Inwestycje' ) GROUP BY B1.idJst


pojawia się błąd:

  1. #1054 - Unknown column 'B1.idJst' in 'on clause'


Wynikiem powinna być tabela zawierająca:
idJst, skrót, sumę z rokiem 20071 i sumę z rokiem 20072
Tabela wr_budzet zawiera:
id, idJst, typD, kwota, rok
Tabela wr_jst zawiera:
idJst, skrót, pełną nazwę
Niestety nie mam wpływu na wersję serwera sql'owego i czy można by było zadać zapytanie inaczej aby uzyskać ten sam wynik?

Pozdrawiam
Morfi
luki100011
Może te AS w zapytaniu po FROM jest niepotrzebne.
Albo tez brakuje tobie AS przy drugiej tabeli po FROM masz od razu podaną nazwę skróconą bez AS.
Morfi
Brak konsekwencji z mojej strony smile.gif, ale to nie to sad.gif

Morfi
luki100011
Podobny problem był na forum i jako rozwiązanie .... instalacja mysql w wersji 4.

http://forum.php.pl/index.php?showtopic=39537

Także takie apliakcja jak MAMBO czy Oscommerce wydały specjalne łatki usuwający błąd z skryptów - poprostu zmiana zapytania. Poszuakj w google o:
"#1054 - Unknown column in 'on clause' "
a znajdziesz trochę informacji także ze strony producenta mysql tyle że po angielsku.
Morfi
Dzięki, to jest bug parser'a smile.gif

Po wstawieniu nazw tabel w nawiasy błąd zniknął
  1. SELECT B1.idJst, J1.skrot, sum( B1.kwota ) , v20072
  2. FROM ( wr_budzet B1, wr_jst J1
  3. )
  4. LEFT JOIN (
  5.  
  6. SELECT B2.idJst, sum( B2.kwota ) v20072
  7. FROM ( wr_budzet B2
  8. )
  9. WHERE B2.rok =20072 AND (
  10. B2.typD = 'Wynagrodzenia' OR B2.typD = 'Biezace' OR B2.typD = 'Inwestycje'
  11. )
  12. GROUP BY B2.idJst
  13. )B2 ON B1.idJst = B2.idJst
  14. WHERE J1.id = B1.idJst AND B1.rok =20071 AND (
  15. B1.typD = 'Wynagrodzenia' OR B1.typD = 'Biezace' OR B1.typD = 'Inwestycje'
  16. )
  17. GROUP BY B1.idJst
  18. LIMIT 0, 30


Dzięki za pomoc!
Pozdrawiam
Morfi
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.