Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wybieranie kolejnych rekordow po okreslonym
lexis72
post 19.07.2014, 19:26:44
Post #1





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 25.02.2013

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
SmokAnalog
post 19.07.2014, 19:55:23
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


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?
Go to the top of the page
+Quote Post
lexis72
post 19.07.2014, 20:14:44
Post #3





Grupa: Zarejestrowani
Postów: 124
Pomógł: 0
Dołączył: 25.02.2013

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


Nie. Chcialbym okreslic liczbe elementow lancucha sam w zapytaniu. Czyli na tym przykladzie maja to byc tylko 2 kolejne elementy.
Go to the top of the page
+Quote Post
SmokAnalog
post 19.07.2014, 20:27:57
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


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.
Go to the top of the page
+Quote Post
trueblue
post 20.07.2014, 10:23:38
Post #5





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

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


  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


--------------------
Go to the top of the page
+Quote Post
mmmmmmm
post 21.07.2014, 07:24:07
Post #6





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


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.
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 04:48