![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 0 Dołączył: 14.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem z zapytaniem w sql-u. Mianowicie wygląda ono tak:
to przykład zapytania wymyślony na szybko. Problem polega na tym że w zależności czy tworzona kolumna jest 1 czy zero musze ustawić warunek. Robię to w php, na wzór:
Problem w tym że mam błąd:
pytanie zatem jak odwołać się do tej kolumny? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Nie chodzi o to, że brakuje aliasu, bo go nie brakuje. Zapisy `column` `alias` oraz `column` AS `alias` są równoważne.
Nie chodzi również o to, że "alias" w WHERE jest niewidoczny, bo to nie do końca prawda. Alias jest niewidoczny w WHERE ze względu na to, że używasz funkcji agregującej SUM w połączeniu z grupowaniem GROUP BY po kolumnie id, przy czym grupowanie odbywa się na końcu. Zapytanie najpierw szuka wierszy spełniających warunek WHERE `isComment`= 0 (ta kolumna w tej chwili nie istnieje stąd błąd), a dopiero później grupuje wyniki i sumuje wartości (dopiero wtedy "powstaje" kolumna `isComment` i dlatego w WHERE jej "nie widać"). HAVING natomiast działa na pogrupowanych już rekordach. Poza tym zaleca się w tym przypadku w ramach optymalizacji denormalizację bazy danych i dodanie kolumny przechowującej sumę w danej tabeli. Ten post edytował mortus 12.04.2013, 07:32:03 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 04:06 |