Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Zależności w tabeli
Forum PHP.pl > Forum > Przedszkole
gosciu99
Próbowałem różnych metod.... ale nie udaje mi się chciałem zrobić tak:
Mam tabele arty i tabele autorzy i na podstawie arty.ida oraz autorzy.id chce to powiazac i razem z wyswietleniem artykulow chce wyswietlic info o autorze jak to zrobic?
Michasko
Nie lepiej byłoby do tabeli arty dodać pola autor_nick i autor_info i wtedy wyświetlać to wszystko z jednej tabeli?
mike
Cytat(Michasko @ 2006-05-21 17:41:13)
Nie lepiej byłoby do tabeli arty dodać pola autor_nick i autor_info i wtedy wyświetlać to wszystko z jednej tabeli?

Oj niewiele wiesz o projektowaniu baz danych.
Podstawowy błąd: zbędne wprowadzenie nadmiarowości w celu otrzymania wątpliwej wygody.

~gosciu99
Mamy taką sytuację:

articles
id | author_id | subject | content

authors
id | name | surname

Robiąc tak:
  1. SELECT *
  2. FROM articles
  3. LEFT JOIN authors ON articles.author_id = authors.id

dostaniesz listę wszystkich artykułów i do każdego będą dołączone informacje z tabeli authors o autorze artykułu.
Michasko
Cytat(mike_mech @ 2006-05-21 17:56:32)
  1. SELECT *
  2. FROM articles
  3. LEFT JOIN authors ON articles.author_id = authors.id

dry.gif
przeczytałem kilka kursów MySQL i w żadnym nie było nic o łączeniu tabel sad.gif
gosciu99
Może zadaje głupie pytania zdaża mi się ale mam kilka pytań

1)Wtedy dane wyświetlam tak jakby była to jedna baza danych?
2)Co wtedy kiedy w obu są pola tej samej nazwy? Ale Różnej treści?
3)By wyświetlić pole trzeba napisać z jakiej tabeli czy skrypt będzie wiedział?

To na razie tyle moich wątpliwości, przepraszam, że zawracam głowę.
mike
Pytanie nie są głupie.

Dobrze zrobisz jak sam sobie na nie odpowiesz robiąc testy.
Ja Ci tylko pomogę.

Ad. 1)
Tak. Jeśli zrobisz tak to dostaniesz się do poszczególnycyh rekordów wyniku zapytania
  1. <?php
  2.  
  3. // połącznie z bazą danych
  4. $resQueryResult = mysql_query( 'SELECT * FROM articles LEFT JOIN authors ON articles.author_id = authors.id' );
  5.  
  6. if( mysql_num_rows( $resQueryResult ) > 0 )
  7. {
  8. while( $arrRow = mysql_fetch_array( $resQueryResult ) )
  9. {
  10. echo '<pre>' . print_r( $arrRow, true ) . '</pre>';
  11. }
  12. }
  13. else
  14. {
  15. echo 'Brak artykułów';
  16. }
  17.  
  18. ?>


Ad. 2)
Słuszna uwaga.
W moim przykładzie tak jest, kolumna id powtarza się w dwóch tabelach.
Jeśli pracujesz na konsoli mysql to żaden problem, żaden problem jeśli korzystasz z mysql_ferch_row i do pól dostajesz się numerycznie. Ale gożej jeśli stosujesz mysql_fetch_array() (z domyślnym ostatnim parametrem), jak ja powyżej lub mysql_fetch_assoc(), które generują tablica asocjacyjne. Wtedy w zapytaniu musisz zasosować aliasy.

Ad. 3)
Odpal sobie to co CI napisałem i zobacz jak wygląda wiersz ze zbioru wyników, a będziesz wiedział.

Jednym słowem: miłej zabawy w szukanie odpowiedzi smile.gif
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.