Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> GROUP BY, ORDER BY
pracus
post
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 14.09.2010

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


Mam dwie tabele, które łączę w zapytaniu LEFT JOINem.

Pierwsza [records] zawiera: id, name, value.
Druga [records_values] zawiera: id, value, condition.

Chcę wyciągnąć rekordy z unikalnymi id spełniające warunek i o najwyższej wartości condition.

Powiedzmy, że tabele wypełnione są tak:

[records]
id | name | value
1 | ABC | 3
2 | DEF | 5
3 | GHI | 0

[records_values]
id | condition | value
1 | 8 | 0
1 | 10 | 1
1 | 20 | 3
2 | 5 | 0
2 | 10 | 5
3 | 0 | 0

Chcę odpytać o unikalne rekordy, w których condition jest mniejsze od 15, ale maksymalne w swojej grupie, czyli:
id | name | value
1 | ABC | 1
2 | DEF | 5
3 | GHI | 0

Próbowałem przez:

SELECT r.id, r.name, rv.value FROM records r LEFT JOIN records_values rv USING (id) WHERE rv.condition < 15 GROUP BY r.id ORDER BY rv.condition DESC

Niestety ORDER BY jest ignorowane lub nie działa tak jak przewidywałem.
Jakies pomysły?

Zadanie "na szóstkę": wynik całości ma być sortowany po id smile.gif

Z góry dziękuję!

Czy można w ogóle sortować wewnątrz grupy?

Ten post edytował pracus 6.11.2010, 09:26:47
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
mrok
post
Post #2





Grupa: Zarejestrowani
Postów: 258
Pomógł: 17
Dołączył: 22.05.2007

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


tak pisane z palca, wiec nie jestem pewien czy na 100% Ci zadziala
  1.  
  2. SELECT R.id, R.name, max(RV.value) AS value
  3. FROM records R
  4. JOIN record_values RV ON R.id = RV.id
  5. WHERE RV.condit < 15
  6. GROUP BY R.id
  7. ORDER BY R.Id;
  8.  
  9.  


--------------------
Go to the top of the page
+Quote Post
pracus
post
Post #3





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 14.09.2010

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


Dzięki! Zaraz sprawdzę.
Tylko już widzę błąd - to condition ma być maksymalne (ale spełniające warunek), a nie value.

Niestety nie działa :/
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 Aktualny czas: 19.08.2025 - 13:45