Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Łączenie tabel
Forum PHP.pl > Forum > Przedszkole
makinto
Witam

Posiadam dwie tabele

Users

id | nick | pass | data_rej | nazwa users


i druga tabela

Wiadomosci

wiad_id | wiad_od | wiad_do | wiad_data | wiad_temat | wiad_tresc | wiad_status

I teraz mam pytanie bo już próbuję na różne sposoby i nic nie wychodzi. Chciałbym wyciągnąć informację

wiad_temat | wiad_data | wiad_data | nazwa_users.

chodzi o to abym wiedział od kogo dostałem wiadomości.
b4rt3kk
Na podstawie jakiego pola jest powiązanie między tabelą users a wiadomosci? Jeśli nick jest unikatowy to możesz tak:

  1. SELECT wiadomosci.wiad_temat, wiadomosci.wiad_data, users.nazwa_users FROM wiadomosci JOIN users ON wiadomosci.wiad_od = users.nazwa_users


ale zalecałbym wpisywanie do tabeli wiadomosci id usera.
makinto
tzn ? jak miałoby to wyglądać ?

  1. SELECT wiadomosci.wiad_temat, wiadomosci.wiad_data, users.nazwa_users FROM wiadomosci JOIN users ON wiadomosci.wiad_od = users.nazwa_users WHERE wiadomosci.wiad_do=1



Takie zapytanie nie zwraca żadnych wyników mimo iż t tabeli wiadomości są wiadomości do id=1
viking
Zapewnie wiad_od i wiad_do = users.id
b4rt3kk
Cytat(makinto @ 21.01.2013, 18:25:37 ) *
tzn ? jak miałoby to wyglądać ?

  1. SELECT wiadomosci.wiad_temat, wiadomosci.wiad_data, users.nazwa_users FROM wiadomosci JOIN users ON wiadomosci.wiad_od = users.nazwa_users WHERE wiadomosci.wiad_do=1



Takie zapytanie nie zwraca żadnych wyników mimo iż t tabeli wiadomości są wiadomości do id=1


A skąd ja mam wiedzieć co Ty masz wpisane w tabeli wiadomosci? Nie napisałeś tego. Czym są pola przedstawione przez Ciebie w pierwszym poście, jakie dane przechowują?
makinto
Pole Typ Null
wiad_id int(11) Nie
wiad_tresc text Tak NULL
wiad_od int(11) Tak NULL
wiad_do int(11) Tak NULL
wiad_status tinyint(1) Tak NULL
wiad_data datetime Tak NULL
wiad_temat varchar(30) Tak NULL
b4rt3kk
Cytat(makinto @ 21.01.2013, 18:48:21 ) *
Pole Typ Null
wiad_id int(11) Nie
wiad_tresc text Tak NULL
wiad_od int(11) Tak NULL
wiad_do int(11) Tak NULL
wiad_status tinyint(1) Tak NULL
wiad_data datetime Tak NULL
wiad_temat varchar(30) Tak NULL


Jeśli wiad_od to id użytkownika (zakładam tak po typie pola), to zapytanie powinno wyglądać tak:

  1. SELECT wiadomosci.wiad_temat, wiadomosci.wiad_data, users.nazwa_users FROM wiadomosci JOIN users ON wiadomosci.wiad_od = users.id
makinto
  1. SELECT wiadomosci.wiad_temat, wiadomosci.wiad_data, users.nazwa_users FROM wiadomosci JOIN users ON wiadomosci.wiad_od = users.id WHERE wiad_do=$id_logged


Działa. Dzięki wielkie
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.