Prawdopodobnie chodzi o to, aby zrobić pivota na tabeli i żeby ona wyglądała następująco :
Imię |
Nazwisko |
Timestamp |
Adam |
Kowalski |
2000-05-04 |
Zenon |
Nowak |
2001-06-01 |
Sam znam SQL na poziomie podstawowy i po przemyśleniach dalej nic nie wymyśliłem. Tzn mój pivot mi nie wychodzi... gdyż nie można w nim stosować select distinct.
Proste obejście tego problemu to wziąć wykonać select na tabeli, sortując najpierw malejąco wg daty a następnie wg nazwy. Sam mówisz że pól może dojść domyślam się ,że tabela wtedy wyglądała by w następujący sposób :
Nazwa |
Wartość |
Timestamp |
Imie |
Adam |
2000-05-04 |
Nazwisko |
Kowalski |
2000-05-04 |
Wiek |
16 |
2000-05-04 |
LiczbaDzieci |
2 |
2000-05-04 |
itd, wtedy polecenie powinno wyglądać tak
SELECT TOP 40 Wartosc FROM Tabela
ORDER BY Timestamp DESC, Wartosc ASC
**
TOP 40** - daltego, że wyciągasz 4 pola Imie, Nazwisko, Wiek, LiczbaDzieci, a łącznie chcesz wyciągnąć dane 10 użytkowników.
Wyniki dla wszystkich userów będą zwracane w formie
Result
Adam //imie
2 //liczba dzieci
Kowalski //nazwisko
16 // wiek
Teraz wyniki masz jakoś ustandaryzowane, co prawda nie eliminuje to kłopotu, ale możesz sobie z wyników zrobić jakąś pętle w php
for($i=0;$i<40;$i+4)
{
tablica[$i] = imie
tablica[$i+1] = liczba dzieci
tablica[$i+2] = nazwisko
tablica[$i+3] = wiek
}
<edit>
@unikalna_nazwa
Najlepsze wyjście to pivot, ale jak napisałem nie wiem jak go wykonać, choć w przypadku pivotu przy dodaniu jakiegoś "atrybutu" do bazy, musiałbyś zmieniać zapytanie. Najlepsze wyjście to użycie procedury, która zwraca X rekordów, x sobie sam byś wyliczył.
A.. tylko wtedy zamiast TOP musisz użyć SET ROWCOUNT