Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL] Formułowanie zapytania, Zapytanie z JOIN
duzymaju
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 10.11.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Mam problem dotyczący poprawnego sformułowania zapytania do "wyciągnięcia" dodatkowych danych o profilu zapisanym w tabelach baz MySQL mojego systemu administracji.
W tabeli mmdsadmlg1 trzymam najważniejsze informacje o profilach, które rozróżniane są za pomocą numerów ID. Dwie pozostałe tabele dotyczą dodatkowych danych podawanych przez użytkownika:

mmdsadmlg2 - definiowany przez admina zestaw dodatkowych danych
daneid tinyint
danenazwa varchar
... (reszta kolumn)

mmdsadmlg3 - wartość konkretnej danej (daneid) konkretnego użytkownika (profid)
profid mediumint
daneid tinyint
wartosc varchar

Użytkownik nie musi podawać wszystkich danych, więc dla konkretnych użytkowników zestaw rekordów z dodatkowymi danymi nie będzie pełny (np. na 5 pól z dodatkowymi danymi użytkownik wypełni tylko 2).

Chciałbym "wyciągnąć" dla konkretnego użytkownika zestaw wszystkich dodatkowych danych zdefiniowanych przez admina i dołączyć te wartości, które wypełnił on podczas rejestracji, czyli otrzymać np. coś takiego:

Imię: Jan
Nazwisko: Kowalski
Adres: [brak danych]
Telefon: 1234567
GG [brak danych]

Zastosowałem zapytanie wykorzystujące JOIN (tu dla użytkownika o ID wartości 1):

  1. SELECT * FROM tableadmlg2 tb2 LEFT JOIN tableadmlg3 tb3 ON tb2.daneid=tb3.daneid WHERE tb3.profid='1'


W tym jednak przypadku MySQL zwraca mi tylko te dane, przy których wartości są wypełnione przez użytkownika 1. Jak można wyświetlić listę wszystkich danych z wartościami pól wypełnionych przez konkretnego użytkownika?
Sprawa jest dość pilna, dlatego bardzo liczę na Waszą pomoc, za którą już dziś serdecznie dziękuję. Jeśli coś byłoby niejasne, proszę pisać na forum lub bezpośrednio do mnie przez GG (612901).
Go to the top of the page
+Quote Post
DeyV
post
Post #2





Grupa: Zarząd
Postów: 2 277
Pomógł: 6
Dołączył: 27.12.2002
Skąd: Wołów/Wrocław




sprawdź tak

  1. SELECT *
  2. FROM tableadmlg2 tb2
  3. LEFT JOIN tableadmlg3 tb3 ON ( tb2.daneid=tb3.daneid AND tb3.profid='1' )


ps. nie sądzisz, że warto by tworzyć nieco "czytelniejsze" nazwy tabel ?


--------------------
"Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
Go to the top of the page
+Quote Post
duzymaju
post
Post #3





Grupa: Zarejestrowani
Postów: 5
Pomógł: 1
Dołączył: 10.11.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dzięki, dzięki. Teraz działa jak trza! Jeśli chodzi o nazwy tabel, w sumie do niedawna się nad tym nie zastanawiałem ale jesteś już drugą osobą, która zwraca mi na to uwagę, więc może coś w tym jest. biggrin.gif Pomyślimy.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 07:01