Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Foreign key?
boyar01
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 17.07.2009

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


Witam

Projektuje właśnie bazę na stronę. I natrafiłem na problem.
Ale od początku.
Posiadam dwie tabele:

POSTS z kolumnami | id(primary key) | title | post |

oraz

IMAGES - | id(primary key) | url |

Każdy post może posiadać więcej niż 1 zdjęcie. I tu mój problem. Na początku myślałem aby do tabeli POSTS dodać kolumnę np. imagesid gdzie zapisywałbym (np. w formie 1:12:245) id zdjęć.
Jednak po przemyśleniu doszedłem do wniosku, że aby wyświetlić interesujące mnie dane (wszystkie z kolumny z POSTS + wszystkie odpowiednie rekordy zdjęć) musiałbym robić jedno odwołanie, analizować pobrane dane i robić kolejne odwołanie. Co mi się nie podoba. Zacząłem szukać i wpadłem na OBCY KLUCZ - Foreign Key, ale nie wiem jak go do końca zastosować.

Czy ktoś mógłby pomóc? Chodzi mi o utworzenie ala 'relacji' 1 do wielu między 2 tabelami, oraz w jaki sposób następnie pobrać te dane podczas jednego połączenia do bazy.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Post ma wiele obrazkow, to do obrazka wstawiasz post_id ktore bedzie wskazywac na post do ktorego ten obrazek nalezy.

A pobieranie?
SELECT * FROM images WHERE post_id = $postID


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
boyar01
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 17.07.2009

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


Tak, oczywiście, ale takim sposobem dalej muszę wykonać dwa zapytania do bazy danych. Jedno do tabeli posts, drugie do tabeli images. (np. gdy nie znany jest id postu, np kiedy chciałbym wyświetlić posty z danego roku. Wtedy muszę pobrać najpierw posty i dopiero znając ich id mogę pobierać zdjęcia). Jestem pewny, że jest lepsze rozwiązanie, a pisząc tą stronę chciałem właśnie się czegoś nauczyć.

Znalazłem coś takiego, ale nie wiem do końca jak to zastosować i jak w ten sposób utworzonych tabeli później korzystać.
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Jak to dwa...? A JOIN?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cytat(boyar01 @ 17.07.2009, 22:04:22 ) *
Tak, oczywiście, ale takim sposobem dalej muszę wykonać dwa zapytania do bazy danych. Jedno do tabeli posts, drugie do tabeli images. (np. gdy nie znany jest id postu, np kiedy chciałbym wyświetlić posty z danego roku. Wtedy muszę pobrać najpierw posty i dopiero znając ich id mogę pobierać zdjęcia). Jestem pewny, że jest lepsze rozwiązanie, a pisząc tą stronę chciałem właśnie się czegoś nauczyć.


Mozesz sobie pobrac wszystkie posty zjoinowane z wszystkimi ich zdjeciami, jednym zapytaniem, ale dla kazdego zdjecia masz caly rekord postu po raz kolejny.

Mozesz tez pobrac najpierw wszystkie posty, a drugim zapytankiem wszystkie obrazki (join do postow i sprawdzanie daty postu).


--------------------
Nie lubię jednorożców.
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: 20.08.2025 - 11:44