Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Łączenie danych z tabel przy pobieraniu
Forum PHP.pl > Forum > Bazy danych > MySQL
nitr0
Witam Was.

Mam problem ze skonstrułowaniem zapytania do bazy MySQL, a mianowicie.

Mam tabele:

users
- id
- name

box
- id
- name
- description

access
- id
- user_id
- box_id


Jest tu złączenie (wg mnie) wiele do wielu. Jeden user może mieć wiele boxów, jeden box, może należeć do kilku użytkowników.

Jak wyświetlić boxy należące do jednego usera, posiadając np jego user_id?

Oraz jak wyświetlić wszystkie boxy, oznaczając który box należy do niego (zalóżmy, że box3)
przykładowo:
box1
box2
box3
box4


Aktualnie mam tak:
  1. <?php
  2. $query = mysql_query(" SELECT * FROM box ");
  3.  
  4. while ($row = mysql_fetch_assoc($query))
  5. {
  6. ?>
  7. <form action="" method="POST">
  8.  
  9. <?php echo $row["name"]." - ".$row["description"]." "; ?><input name="<?php echo $row["id"] ?>" type="checkbox" value="1" />
  10. </form>
  11. <?php
  12.  
  13. }
  14. ?>


Wyświetla mi to checkliste i tu chciałbym np oznaczyć poprzez checked, który box jest już przypisany.



Nigdy nie pracowałem na relacjach wiele do wielu, i nie bardzo wiem jak ugryźć ten problem. Może ktoś pomoże i rzuci snop światła na ten przytłaczający już mnie problem...

Zastanawiam się też, jak obsłużyć dodawanie/usuwanie dostępu do poszczególnych boxów. W tej chwili jedynie przychodzi mi do głowy pojedyńcze dołączanie każdego boxa, może da się to jakoś masowo zrobić?

Będę wdzięczny za pomoc.
reaktor
Boxy nalezace do konkretnego usera wybierzesz tak:

  1. SELECT b.*
  2. FROM users u
  3. JOIN access a ON a.user_id=u.id
  4. JOIN box b ON b.id=a.box_id
  5. WHERE u.name='czesiek'



Aby wyswietlic wszystkie boxy a potem oznaczac
boxy danego usera, uzyj zapytania:

  1. SELECT b.*, u.*
  2. FROM box b
  3. LEFT JOIN access a ON b.id=a.box_id
  4. LEFT JOIN users u ON (u.id=a.user_id AND u.id='czesiek')


Nastepnie w skrypcie jadac po wynikach bedziesz
wypisywal kazdego checkboxa i jakos go oznaczal
jesli u.id nie bedzie nullem
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.