![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 658 Pomógł: 37 Dołączył: 4.06.2005 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
Hej,
Temat trochę zakręcony, ale nie mogę sobie poradzić. Postaram się go Wam przedstawić i opisać, może ktoś mi pomoże. Mam tabele w której jest pole udostępnij. Każdy użytkownik po dodaniu nowego rekordu może go udostępnić innemu użytkownikowi. Czyli janek dodał rekord i dopisał , że użytkownik o id 1 ma to widzieć. Użytkownik o id 1 po zalogowaniu zobaczy swoje rekordy plus rekord od janka. Problem mam w tym, że janek jeden rekord udostępnia użytkownikowi 1,2,3 ( pole udostępniania jest typu VARCHAR ). Po takim udostępnieniu użytkownik o id 2,3 nie widzą rekordu. Jeśli jest jedna cyfra to umiem zrobić to zapytanie , wygląda mniej więcej tak
Niestety problem mam w tym, jak pobrać dla innych użytkowników , którzy są wymienieni w polu udostępniania po przecinku. Czy jest to w ogóle wykonalne?. Zależy mi na tym udostępnianiu. Będę zobowiązany za informację -------------------- Pozdrawiam
Piotrek R |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 548 Pomógł: 105 Dołączył: 4.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Masz złą strukturę bazy. Powinna być jeszcze jedna tabela, która będzie wiązała użytkownika, któremu udostępniasz , z rekordem z Twojej tabeli
TABELA WIĄŻĄCA ID_USER ID_REKORD_UDOSTĘPNIANY Wówczas wszystko będzie jak należy -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 658 Pomógł: 37 Dołączył: 4.06.2005 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
No dobra dodam tabele wiążącą, ale jak dodać do tej tabeli dane jeśli użytkownik w nowym rekordzie ma jedno pole w którym wymienia id innych użytkowników po przecinku ? bo to będzie kilka insertów
Ten post edytował redelek 6.06.2011, 08:42:46 -------------------- Pozdrawiam
Piotrek R |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 548 Pomógł: 105 Dołączył: 4.06.2010 Ostrzeżenie: (0%) ![]() ![]() |
jak dodasz tą tabele jak powiedział nospor to tamto pole nie będzie ci potrzebne dajesz warunek że np ID_USER= 2 i wyciągasz z tej tabeli wszystkie ID_REKORD_UDOSTĘPNIANY które spełniają ten warunek
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 658 Pomógł: 37 Dołączył: 4.06.2005 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
kurcze zapalcie żarówkę bo nie rozumiem tego.
Skąd tabela wiążąca będzie wiedziała , że ten rekord jest udostępniony dla innego użytkownika ? -------------------- Pozdrawiam
Piotrek R |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Dwa INSERT-y trzeba będzie zrobić. Pierwszy do wstawienia rekordu, a drugi do powiązania z rekordem użytkowników.
W taki sposób realizuje się bazodanową relację wiele do wielu. Ten post edytował mortus 6.06.2011, 09:02:42 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 658 Pomógł: 37 Dołączył: 4.06.2005 Skąd: Wawa Ostrzeżenie: (0%) ![]() ![]() |
no tak, ale jak użytkownik doda kilku użytkowników 2 lub 10 to będzie musiał być 10 insertów.
Bo jeśli użytkownik udostępnia jeden rekord użytkownikom 2, 3,4,5,6,7,8,9 to w tabeli wiążącej muszą powstać id_user id_rec_shared 2 10 3 10 4 10 5 10 6 10 7 10 itd.. Tak , bo ja to tak rozumiem -------------------- Pozdrawiam
Piotrek R |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
no tak, ale jak użytkownik doda kilku użytkowników 2 lub 10 to będzie musiał być 10 insertów. Bo jeśli użytkownik udostępnia jeden rekord użytkownikom 2, 3,4,5,6,7,8,9 to w tabeli wiążącej muszą powstać id_user id_rec_shared 2 10 3 10 4 10 5 10 6 10 7 10 itd.. Tak , bo ja to tak rozumiem Wystarczy jeden INSERT troszkę bardziej rozbudowany: Nie wiem tylko, czy MySQL nie ogranicza tego rodzaju operacji do np. kilkudziesięciu wartości (VALUES). Jeżeli tak, to trzeba będzie w pętli INSERT-y zrobić, tak jak to zauważyłeś. EDIT W sumie to wszystko jest uzależnione od liczby użytkowników, którym dany rekord może być udostępniany. Jeśli tych użytkowników jest wielu, to może warto by było zastanowić się nad zaimplementowaniem grup użytkowników. Ten post edytował mortus 6.06.2011, 09:14:38 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 07:12 |