![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 7.11.2004 Ostrzeżenie: (40%) ![]() ![]() |
Załóżmy, że jest tabela TEST o 'polach' id i 'wartosc'.
Jak JEDNYM zapytaniem znalezc rekord(y), ktory ma najwieksza 'wartosc', tak zeby wynik zapytania zawieral takze wartosc pola 'id'. Rekordów o największej 'wartosc' moze byc kilka. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 159 Pomógł: 6 Dołączył: 2.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
poszukaj informacji o "funkcji" MAX()
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 7.11.2004 Ostrzeżenie: (40%) ![]() ![]() |
ech, znam MAX(). Poczytaj dokladnie jaki jest problem i zaproponuj rozw, jesli potrafisz.
Ten post edytował TakiJakis 22.11.2007, 18:03:50 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 159 Pomógł: 6 Dołączył: 2.01.2004 Ostrzeżenie: (0%) ![]() ![]() |
No to podzapytanie np LEFT JOIN ?
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 7.11.2004 Ostrzeżenie: (40%) ![]() ![]() |
Pytasz czy odpowiadasz? Jezeli odpowiadasz, to podaj pelna odpowiedz, nie za bardzo widze jak LEFT JOIN mialoby pomoc...
Ten post edytował TakiJakis 22.11.2007, 21:09:34 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 7.11.2004 Ostrzeżenie: (40%) ![]() ![]() |
Ok, dzieki, a czy jednym zapytaniem da sie to zrobic?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 158 Pomógł: 43 Dołączył: 9.11.2007 Ostrzeżenie: (0%) ![]() ![]() |
To było jedno zapytanie
![]() Rozumiem, że chciałyś aby nie było podzapytania. Moim zdaniem za pomocą jednego selekta nie da się. Jeżeli wiesz, że tych wartości maksymalnych nie będzie np. więcej niż 10, to można ewentualnie wykonać zapytanie z malejącym sortowaniem po polu 'wartosc'
Pierwszy rekord otrzymany w wyniku tego zapytania ma na pewno wartość maksymalną, pozostałe rekordy można ewentualnie z nim porównać. Ale moim zdaniem zapytanie, które podałem wcześniej jest optymalne o ile na polu wartosc jest założony indeks |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 22.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 1 045 Pomógł: 5 Dołączył: 8.11.2004 Skąd: trójmiasto Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że pierwsza wersja tj z podzamytaniem
jest szybsza, ponieważ w drugim przypadku, raz że pobiera się wszystkie wiersze, potem jeszcze sie je sortuje, a dopiero na końcu pobiera LIMIT, na dodatek zwraca złe dane Ten post edytował php programmer 23.11.2007, 14:31:22 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 13:07 |