Zapytanie SQL

0

Witam. Mam tabele

Nazwa | Wersja |
-------------------|
Lolek | 1 |
Lolek | 3 |
Lolek | 2 |

Ymm jak tu teraz wytłumaczyć? Po prostu chce wybrać 1 rekord, gdzie nazwa= 'Lolek' i z tego musi mieć największa wersje.
Coś w stylu tego:

SELECT * FROM tabelka WHERE Nazwa = 'Lolek' AND max(Wersja)

Tylko niestety max nie jest atrybutem where.

Dam przykład


Nazwa | Wersja |
-------------------|
Lolek | 1 |
Lolek | 4 |
Lolek | 2 |
Bolek | 2 |
Lolek | 3 |
Lolek | 9 | <- ten rekord wybrać, gdyz nazwa=lolek a wersja jest najwieksza
Lolek | 8 |
Lolek | 5 |
Bolek | 1 |
Lolek | 6 |
Bolek | 3 |
Lolek | 7 |

na razie to robie w php
zapytanie "SELECT * FROM tabela WHERE nazwa = 'lolek'
zmienna z 0 -> $wersjaar = 0;
Petelka while a w niej:
if ($zmienna['wersja'] > $wersjaar){
$zmienna2 = $zmienna['dane z tabeli']
}

I wynikiem tego mam $zmienna2 z danymi gdzie jest nazwa = 'lolek' oraz wersja ma najwieksza liczbe

0

select * from tabela where nazwa = 'lolek' order by wersja desc.
I wybierz pierwszy wiersz.
Albo zrób tylko pierwszego fetch'a, albo dodaj do where'a żądanie tylko pierwszego wiersza.
To ostatnie zależy od bazy jakiej używasz

0

Qrde... nie myślałem pod względem tego kierunku, używając sortowania... Dzięki.

SELECT * FROM artykuly WHERE nazwa = 'lolek'' order by wersja desc LIMIT 1

0

A nie można po prostu:

SELECT MAX(WERSJA) FROM AKTYRKULY WHERE NAZWA='LOLEK' ?

albo jak chcesz mieć wszystkie max'y

SELECT NAZWA, MAX(WERSJA) FROM ARTYKULY GROUP BY NAZWA

0

@b0bik: nie, bo w ten sposob dostaniesz tylko wersje, a nie caly wiersz dotyczacy tej wersji.

0

No to:

SELECT NAZWA, MAX(WERSJA) FROM AKTYRKULY WHERE NAZWA='LOLEK' GROUP BY NAZWA

0

Ja myslalem bardziej ogolnie, ale w tym wypadku mnie masz :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1