Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wybieranie kolejnych rekordow po okreslonym
Forum PHP.pl > Forum > Bazy danych > MySQL
lexis72
Witam,
Mam tabele z m.in 2 kolumnami : user (id uzytkownika) i zadanie (nazwa zadania). Przykladowe dane:
1 - Quiz
2 - Quiz
2 - Rysunek
3 - Bryly
3 - Matematyka
3 - Listy
4 - Bryly
4 - Dopasowywanie
4 - Quiz

W momencie wykonania przez usera jakiegos zadania pojawia sie wpis do bazy. W zwiazku z tym ze zadan w bazie jest wiele a kolejnosc ich wykonywania nie jest okreslona chcialbym sprawdzic jaka jest logika wybierania przez userow zadan. W tym celu chcialbym otrzymac informacje w postaci kolejnych wykonywanych przez userow zadan ale w zwiazku z tym ze zadan jest bardzo duzo chcialbym moc sobie wybrac ze np chcialbym zobaczyc jaki jest najczestszy wybor uzytkownikow po rozwiazaniu np jakiegos konkretnego zadania.

Czyli na przykladzie tych przykladowych danych w jaki sposob mozna otrzymac liste dwoch kolejnych zadan ktore wykonywane sa po zadaniu 'Bryly'.

Wynik powinine byc taki:
1 zadanie - 2 zadanie
Matematyka - Listy
Dopasowywanie - Quiz
SmokAnalog
Czy chcesz pobrać cały łańcuch wyborów następujący po danym przedmiocie dla danego ID użytkownika? Czyli może to być więcej niż 2?
lexis72
Nie. Chcialbym okreslic liczbe elementow lancucha sam w zapytaniu. Czyli na tym przykladzie maja to byc tylko 2 kolejne elementy.
SmokAnalog
Myślę, że da się to zrobić w czystym MySQL na podzapytaniach albo joinach, ale prawdę mówiąc nie wiem jak. Wiem jak to zrobić w PHP, ale wtedy musiałbyś przeanalizować pełną listę rekordów, co mogłoby być ciężkie przy wielu rekordach.
trueblue
  1. SELECT id,GROUP_CONCAT(przedmiot)
  2. FROM(
  3. SELECT id,przedmiot,IF(id<>@id,(SELECT @przedmiot:=0),0),IF(id<>@id,(SELECT @id:=id),0),IF(przedmiot='Bryły' OR @przedmiot=1,(SELECT @przedmiot:=1),0) AS flaga FROM a,(SELECT @przedmiot:=0,@id:=0) AS X WHERE id IN(SELECT id FROM a WHERE przedmiot='Bryły')
  4. ) AS tmp
  5. WHERE flaga=1 AND przedmiot<>'Bryły'
  6. GROUP BY id
mmmmmmm
Jeśli masz tylko te dwie kolumny, to zadanie jest nie do wykonania, bo nie wiadomo w jakiej kolejności rekordy zostały dodane. Brakuje albo kolumny AI, albo timestamp.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.