Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Join, połączenie tabel
Forum PHP.pl > Forum > Bazy danych > MySQL
Xarias09
Witam !

Mam taki problem, że nie potrafię złączyć tych tabel

To jest moje zapytanie:

  1. SELECT region_players.region_id,user.name,region_cuboid.min_x,region_cuboid.min_y,region_cuboid.min_z FROM region_players,user,region_cuboid WHERE region_players.user_id = user.id AND region_players.region_id = region_cuboid.region_id


Potrzebuje wyświetlić wszystkie region_id z tabeli region_cuboid zamiast z region_players pola region_id

Jak to zrobić?
alegorn
nie bardzo lapie co chcesz osiagnac.

po pierwsze naucz sie pisac zapytania z JOIN
tutaj mialbys:

  1. FROM
  2. region_players rp
  3. JOIN user u ON rp.user_id = u.id
  4. JOIN region_cuboid rc rp.region_id = rc.region_id



po drugie, jesli chcesz wyswietlic oklumny o tych samych nazwach z roznych tablem, to albo uzywasz aliasow, albo pelnych nazw tabelm przed kolumna :
  1. SELECT u.id

po trzecie,
Cytat
Potrzebuje wyświetlić wszystkie region_id z tabeli region_cuboid zamiast z region_players pola region_id

no ale skoro rp.region_id = rc.region_id to co za roznica?

opisz problem w bardziej przejrzysty sposob
Xarias09
To tak,

1. tabela region_players zawiera TYLKO regiony które MAJĄ już właściciela
2. tabela region_cuboid zawiera wszystkie regiony + ich współrzędne i z niej chce wyświetlić je wszystkie w postaci tabeli ze współrzędnymi (min_x,min_y,min_z) oraz ich właścicielami, zdjęcie tabeli poniżej

http://i.imgur.com/BsKf1.png

3. Właściciele znajdują się w tabeli region_players (W postaci liczby) które są potem wyjaśnione w następnej tabeli "user"

Chodzi mi o to aby pozyskać jakiś kod który wyświetli wszystkie region_id z region_cuboid i dobierze do poszczególnych regionów właścicieli oraz współrzędne wedle tabel region_players/user

I na ten moment dysponuje tylko takim kodem:
SELECT region_players.region_id,user.name,region_cuboid.min_x,region_cuboid.min_y,regio
n_cuboid.min_z FROM region_players,user,region_cuboid WHERE region_players.user_id = user.id AND region_players.region_id = region_cuboid.region_id

Ale nie mam zielonego pojęcia jak to zrobić, kumpel mi podpowiada, że trzeba wykorzystać drugi SELECT ;/


alegorn
tak bez sprawdzania, ale powinno zadzialac.

  1. SELECT
  2. rc.region_id,
  3. u.name,
  4. rc.min_x,
  5. rc.min_y,
  6. rc.min_z
  7. FROM
  8. region_cuboid rc
  9. LEFT JOIN region_players rp ON rp.region_id = rc.region_id
  10. LEFT JOIN user u ON rp.user_id = u.id
  11.  


powinno wyswietlic WSZYSTKIE rekordy z region_cuboid i dołączyć rekordy z tabeli user, jesli takowe znajdzie

o to chodzi?
j.
Xarias09
tak exclamation.gif biggrin.gif zakochany.gif i gitara tongue.gif

Tylko ostatnie pytanie jak sprawić aby w tabeli html wyświetlało "NULL" (brak wyniku, nie znaleziono) czy "IS NULL" to dobra funkcja do tego?
alegorn
is_null w php? tak. powinno zadzialac.
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.