Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] Zależności w tabeli, jak jednocześnie wybrać rekordy z dwóch
gosciu99
post 21.05.2006, 16:35:32
Post #1





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 19.06.2004

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


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?
Go to the top of the page
+Quote Post
Michasko
post 21.05.2006, 16:41:13
Post #2





Grupa: Zarejestrowani
Postów: 283
Pomógł: 31
Dołączył: 10.01.2006
Skąd: Działoszyn

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


Nie lepiej byłoby do tabeli arty dodać pola autor_nick i autor_info i wtedy wyświetlać to wszystko z jednej tabeli?


--------------------
Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :)
Go to the top of the page
+Quote Post
mike
post 21.05.2006, 16:56:32
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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.
Go to the top of the page
+Quote Post
Michasko
post 21.05.2006, 17:05:59
Post #4





Grupa: Zarejestrowani
Postów: 283
Pomógł: 31
Dołączył: 10.01.2006
Skąd: Działoszyn

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


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


--------------------
Po prawie 3-letniej przerwie w programowaniu, znowu raczkuję :)
Go to the top of the page
+Quote Post
gosciu99
post 21.05.2006, 17:18:56
Post #5





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 19.06.2004

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


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ę.
Go to the top of the page
+Quote Post
mike
post 21.05.2006, 17:37:01
Post #6





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 14:59