Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem do DB (pętla?)
Forum PHP.pl > Forum > PHP
Mavcio
Witam,
Jestem poczatkujący w programowaniu i napotkałem na pewien problem.

Mam poniższą tabele w DB:
Kod
COL1 | COL2 | COL3
15  |  29  |  0
29  |  45  |  0
45  |  60  |  0
60  |  61  |  1


I teraz tak. Kluczem (COL1) dla mojego zapytania jest 15, sprawdzam czy dla tego wiersza w COL3 jest wartość 1
- jeśli jest to zapytanie wyrzuca wartość COL2 (29) jako wynik
- jeśli nie ma to przechodze do wiersza którego kluczem (COL1) jest COL2 (29) z pierwszego wiersza, sprawdzam czy w COL3 jest wartość 1, jeśli nie ma to przechodze dalej (wg tego samego wzoru aż w którymś wierszu COL3 przyjmie wartość 1), jeśli jest to wynikiem jest wartość z COL2 (45)

Dla powyzszej tabeli przy zapytaniu o COL1 15 z warunkiem COL3 = 1 wynikiem będzie COL2 61.

Niestety nie jestem w stanie wymyslic takiej petli w php lub po stronie sql. Proszę o pomoc.

Pyton_000
a nie mozesz po prostu:
  1. SELECT col2 FROM tabela WHERE col3 = 1
Mavcio
Nie mogę, wydaje mi się, że podałem zbyt prosty przykład.

Kod
COL1 | COL2 | COL3
15  |  45  |  1
45  |  29  |  0
61  |  60  |  0
29  |  61  |  1
10  |  12  |  1
60  |  10  |  0


1. COL3 może przyjmować wartość 1 w kilku wierszach
2. Moge zacząć iterować począwszy ktoregos z kolei wiersza np. COL1 = 45
3. Wartości w COL1 lub COL2 nie muszą być ustawione rosnąco lub malejąco.

Dla podanego powyżej przykladu i zastosowaniem warunku z mojego pierwszego posta zaczynając od COL1 = 61 z warunkiem COL3 = 1 wynikiem będzie COL2 = 12.
nospor
  1. $tab = array(
  2. 15 => array ('COL2' => 45, 'COL3' => 1),
  3. 45 => array ('COL2' => 29, 'COL3' => 0),
  4. 61 => array ('COL2' => 60, 'COL3' => 0),
  5. 29 => array ('COL2' => 61, 'COL3' => 1),
  6. 10 => array ('COL2' => 12, 'COL3' => 1),
  7. 60 => array ('COL2' => 10, 'COL3' => 0),
  8. );
  9.  
  10. $col1 = 61;
  11. $col2 = null;
  12. $i = 0;
  13. do {
  14. $i++;
  15. if ($tab[$col1]['COL3'] == 1) {
  16. $col2 = $tab[$col1]['COL2'];
  17. break;
  18. }
  19. $col1 = $tab[$col1]['COL2'];
  20. } while ($i < 1000); //zabezpieczenie przed zapetleniem
  21.  
  22. echo $col2;
  23.  

Zas zbudowanie tablicy $tab na podstawie danych z bazy pozostawiam Tobie jako banalne zadanie domowe.
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.