![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
Witam,
Mam takie tabele w bazie danych :
Czyli tabele prisoners, cells i prisonners_cells, Jak widac tabela prisoners_cells to tabela która łączy tabele prisoners i cells aby mozna bylo przypisac danego więźnia do celi, lub wielu wieźniów do jednej celi. No i teraz powiedzmy ze chce wyświetlić nazwiska wieźniów którzy przebywają w celi o id = 11. Po przejrzeniu kilku kursów i kulku próbach mam wątpliwości czy robić to za pomocą JOIN czy WHERE .... AND ... AND.... Moze mi ktos po krótce przedstawić kiedy sie stosuje dane rozwiązanie i dlaczego ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 157 Pomógł: 3 Dołączył: 15.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
ja bym Ci robił złączenie tych tabel wraz z klauzurą where
select * from dbo. tu złączenie inner join where no i tu warunek którego więźnia chcesz wyświetlić |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 80 Dołączył: 31.05.2008 Ostrzeżenie: (20%) ![]() ![]() |
Źle, możesz mieć jednogo więźnia w wielu celach. A chyba nie o to chodzi co?
Musisz zrobić relacjie typu jeden-do-wielu. One-to-many, gdzie jeden więzień może należeć do jednej celi a jedna cela może mięć wielu więźni. Popraw tabele (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
Wiem ze zle, ten problem poruszalem tutaj (post #3)
A teraz pytalem o co innego (IMG:style_emoticons/default/winksmiley.jpg) ale juz rozkminilem kwestie ze złączeniami...... ------------------------------------------------------------------------- a jak bys to przrobil zeby byla relacja jeden-wielu ? Moze odpowiedz w tamtym watku zeby nie bylo crosspostu.... Ten post edytował Wolfie 12.11.2009, 16:42:18 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 444 Pomógł: 79 Dołączył: 26.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
join - to nowsza konstrukcja, zalecana w dokumentacji i moim zdaniem bardziej czytelna
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To ja odpowiem tutaj. Więzień ma przyporządkowaną jedną celę, a więc wystarczy dla więźnia ustawić pole cela (IMG:style_emoticons/default/smile.gif) W ten sposób zawsze będziesz miał sytuację, że więzień jest w konkretnej jednej celi, co zresztą ułatwi Ci potem zapytanie, bo zrobisz szukanie po więźniach, którzy mają określone id celi, a więc bez łączenia się obywasz. Można zrobić jeszcze inaczej, zachowując Twoją strukturę... Wtedy klucz obcy w prisoners_cells tyczący więźnia musiałby być unique (IMG:style_emoticons/default/smile.gif) To zabezpiecza przed dodaniem go do dwóch różnych cel.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 686 Pomógł: 0 Dołączył: 10.11.2008 Skąd: Łódź Ostrzeżenie: (20%) ![]() ![]() |
To drugie rozwiazanie bardzej mi sie podoba, nie bo nie musze nic przerabiac (IMG:style_emoticons/default/tongue.gif)
Pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 13:03 |