Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapytanie, ale jak ?
Forum PHP.pl > Forum > Bazy danych > MySQL
Nookie
Witam,

mam pytanie jak zrobic takowe zapytanie..

mam dwie tabele jedna z uzytkownikami druga z komputerami
w tabeli uzytkownikow mamy pole id_komputera, i bedzie to pole typu string, bedzie przechowywac id rekordow z tabeli komputery rozdzielone pipe'em |

i teraz jak zadac zapytanie w mysqlu zeby pokazal dla danego uzytkownika wszystkie komputery ktore sa pod niego podpiete w jednym zapytaniu ?
czy trzeba pettli ? a jesli tak to jakiej ? bo wyciagnac ze stringa id_komputerow bede potrafil korzystajac x explode i powiedzmy to przechowywac w jakiejs tablicy tylko jak dac zapytanie zeby pokazal to o co mi biega smile.gif


dzieki za wszelka pomoc
stoprocent
A jak odzielone sa id komputerow w tabelio user bo z tego co czytam to 1 userowi moze byc kilka przyporzadkowanych .
np jesli sa odzielone przecinkiem to mozesz zrobic tak .

  1. <?php
  2.  
  3. $query = mysql_query(&#092;"SELECT * FROM users ORDER BY id DESC\");
  4.  while ($row = mysql_fetch_array($query)) 
  5.  
  6. {
  7.  
  8.  echo 'Komputery przypozadkowane '.$row['nazwa_usera'].' :<br />';
  9.  
  10. $ide = explode(',' $row['id_komputera']);
  11.  
  12.  foreach($ide as $id_komp)
  13.  
  14. {
  15.  
  16. $query_foreach = mysql_query(&#092;"SELECT * FROM komputery WHERE id='\".$id_komp.\"' \");
  17.  
  18.  $komputer = mysql_fetch_array($query_foreach);
  19.  
  20. echo $komputer['nazwa'].'<br />';
  21.  
  22.  }
  23. }
  24.  
  25. ?>
FiDO
To rozwiazanie jest glupie... Proponuje przeprojektowac baze.
Widze, ze chcesz tutaj osiagnac relacje wiele do wielu (jeden uzytkownik moze miec wiele komputerow przypisanych i jeden komputer moze miec wielu uzytkownikow).
Takie relacje robi sie z pomoca tabeli pomocniczych. W Twoim przypadku bedzie to wygladalo mniej wiecej tak:
Kod
uzytkownicy:  ID | reszta pol...
komputery  :  ID | reszta pol...
uzytkownicy_komputery: ID_komputera | ID_uzytkownika

Teraz jak zapisujesz informacje do bazy to w nastepujacej postaci:
Kod
ID_komputera | ID_uzytkownika
1              1
1              2
1              3
2              1
3              1

co znaczy, ze komputerowi o ID=1 pr zypisane jest trzech userow (ID kolejno 1,2,3) i dodatkowo userowi o ID=1 sa przypisane jeszcze kompy 2 i 3.

Wybranie teraz wszystkich kompow nalezacych do konkretnego usera jest proste, bez zadnych petli:
  1. SELECT k.* FROM komputery AS k, uzytkownicy_komputery WHERE k.ID = ID_komputera AND ID_uzytkownika = [tutaj_podajesz_id_usera]
Nookie
Jedno i drugie rozwiazanie jest, ok..
drugie wymaga zrobienie dodatkowej tabeli.. co akurat w moim przypadku nie jest chyba konieczne..

komputerow nie powinno byc duuzo wiec petla powinna wystarczyc..

ale przy duuuzych ilosciach 2 rozwiazanie byloby na pewno wygodniejsze !


dzieki piekne chlopaki !
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.