Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] jedno zapytanie czy dwa ?
Forum PHP.pl > Forum > Przedszkole
krzysztof5
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
Cezar708
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
krzysztof5
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
AxZx
  1. SELECT * FROM komentarze AS k LEFT JOIN user AS u ON k.user_id = u.user_id WHERE komentarz_id = {$_GET['id']}
krzysztof5
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
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.