1 | 2
3 | 5
2 | 7
7 | 3
Chciałbym uzyskać
id | next
1 | 2
2 | 7
7 | 3
3 | 5
Czyli po kolei każdy next począwszy od id 1.
I dla chętnych począwszy od wybranego id na przykład zaczynając od 7
id|next
7|3
3|5
Wymyśliłem coś takiego
SELECT t.id, t.next AS next FROM (SELECT t1.id, t1.next FROM TABLE t LEFT JOIN TABLE t1 ON t1.id=t.next) AS t
Ale zwraca coś takiego
id|next
3 | 5
2 | 7
7 | 3
Czyli nie po kolei i bez pierwszego wiersza
SELECT t.id, t.next AS next FROM (SELECT t1.id, t1.id FROM TABLE t1 LEFT JOIN TABLE t2 ON t2.id=t1.next) AS t
Ok, mam wszystkie, ale w złej kolejności, no i nie wiem jak zacząć od id przykładowo 7
1 | 2
3 | 5
2 | 7
7 | 3
Strukturalnie to bym to zrobił mniejwięcej tak:
function getNext($id){ return $ret[0]; } if(getNext(3)>0){ getNext(getNext(3)) }
No i wiadomo to w jakąś pętlę, ale pomyślałem, że może dało by się zrobić to jednym zapytaniem SQL