Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] jedno zapytanie czy dwa ?
-krzysztof5-
post
Post #1





Goście







witam!

od pewnego czasu nurtuje mnie jedno pytanie... Mam dwie tabele - w jednej użytkowników, a w drugiej komentarze do newsa. I teraz czy lepiej jest zrobić w tabeli z komentarzami nazwe uzytkownika i ją dopisywać czy id uzytkownika nwiązujące do tabeli uzytkowników.

Mianowicie chodzi o to że przy komentarzach chce wyświetlić tylko i wyłącznie jego nazwe oraz treść i date komentarza. Wiec jak w tabeli komentarze będzie pole z nazwą użytkownika (a nie z jego id) to wszystko pobiore jednym zapytaniem, natomiast jak będzie id to będe musiał robić dwa zapytania - do tabeli komentarze i do użytkoewnków żeby pobrać jego samą nazwe...

co jest bardziej "opłacalne" ?

pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


NIGDY nie duplikuj danych w bazie danych, czyli jeśli nazwę użytkownika masz w jednej tabeli nie wpisuj jej do drugiej tabeli.

w Twoim przypadku dwie tabele powinny w przybliżeniu wyglądać tak:

Kod
users (id_user, login, name)
posts ( id_post, title, body, user_id ) -- tu user id to jest klucz obcy do tabeli users


i teraz jeśli chcesz mieć imię użytkownika przy poście wystarczy jedno zapytanie do dwóch tabeli, mniej więcej tak:
  1. SELECT *
  2. FROM users u, posts p
  3. WHERE p.user_id=u.id_user


powyższe zapytanie pobierze wszystkie posty z ich autorami, pozdrawiam
Go to the top of the page
+Quote Post
-krzysztof5-
post
Post #3





Goście







no ok... ale... w tabeli posts mam jeszcze pole id_newsa (czyli do którego newsa jest dany komentarz) To jest przesyłane getem czyli komentarze.php?id=5

no i jak teraz powinno wyglądać zapytanie, żeby pobrało tylko komentarze do przesyłanego newsa i z drugiej tabeli pobrało nick usera który dodał komentarz ?

pozdrawiam
Go to the top of the page
+Quote Post
AxZx
post
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 55
Dołączył: 1.03.2005
Skąd: śląsk

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


  1. SELECT * FROM komentarze AS k LEFT JOIN user AS u ON k.user_id = u.user_id WHERE komentarz_id = {$_GET['id']}


--------------------
aplikacje internetowe | Symfony
Go to the top of the page
+Quote Post
-krzysztof5-
post
Post #5





Goście







Cytat(AxZx @ 14.01.2008, 20:54:53 ) *
  1. SELECT * FROM komentarze AS k LEFT JOIN user AS u ON k.user_id = u.user_id WHERE komentarz_id = {$_GET['id']}


hmm a mozesz mi wytłumaczyć co znaczy LEFT JOIN oraz ON ?

i czemu LEFt JOIN a nie np. RIGHT JOIN ? tongue.gif

sorry że tak pytam ale najlepiej to zrozumiem jak ktos mi to wytłumaczy smile.gif

pozdrawiam
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 - 03:20