Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Foreign key?
Forum PHP.pl > Forum > Bazy danych > MySQL
boyar01
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.
dr_bonzo
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
boyar01
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ć.
erix
Jak to dwa...? A JOIN?
dr_bonzo
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).
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.