Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Funkcja agregujaca
attimo
post
Post #1





Grupa: Zarejestrowani
Postów: 115
Pomógł: 6
Dołączył: 23.01.2010

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


Przykładowa struktura:

ID, imie, wiek
1 Jan 24
2 Maria 45

Chciałbym wyswietlic najwyzszy wiek i zarazem imie przyporządkowane temu wiekowi. Czyli w tym przypadku 45 i imie Maria. Próbowałem zrobić to tak, ale nie chce działać.

  1. SELECT Imie, max(Wzrost) AS WW
  2. FROM NW


Pojawia się błąd:
"Próba wykonania kwerendy, która nie zawiera podanego wyrażenia 'imie' jako elementu funkcji agregującej."

Jakby się zastanowić to logiczne, ale jak rozwiązać ten problem ? jak wyszukac maksymalna wartosc i zwrocic poszczegolne pola rekordu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
attimo
post
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 6
Dołączył: 23.01.2010

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


To nie pomogło niestety.

Wymyśliłem coś takiego, ale to działa poprawnie tylko dla pierwszego zapytania a w przypadku drugiego wybiera pierwszy rekord w tabeli a moim zdaniem powinien tez wynik swoich dzialan posortowac i wysiwetlic maxa a tak nie robi. Ktoś wie dlaczego ?

  1. SELECT TOP 1 NW.Imie, NW.Wiek
  2. FROM NW
  3. WHERE (((NW.[Plec])='m'))
  4. ORDER BY NW.Wiek DESC;
  5. UNION SELECT
  6. TOP 1 NW.Imie, NW.Wiek
  7. FROM NW
  8. WHERE (((NW.[Plec])='k'))
  9. ORDER BY NW.Wiek;


Może komuś się przyda:

kwarenda1:
  1. SELECT NW.plec, Max(NW.wzrost) AS MaksimumOfwzrost
  2. FROM NW
  3. GROUP BY NW.plec;


kwarenda2:
  1. SELECT NW.imie
  2. FROM NW INNER JOIN Kwerenda1 ON (NW.plec=[Kwerenda1].plec) AND (NW.wzrost=[Kwerenda1].MaksimumOfwzrost);


Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 16:25