![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Witam. Mam kolejny problem, z którym nie mogę sobie poradzić. Tabele:
Wyświetlam dane z tabeli name (w pustych miejscach są liczby). I teraz pytania: 1. Czy zdołam pobrać name z tabeli adventure posiadający tylko nazwy pól z tabeli users (adv1, adv2, adv3, adv4) ? 2. Jak inaczej (lepiej) przechowywać dane dotyczące usera? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 807 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
1. Nie do końca rozumiem. Będziesz w stanie powiązać te tabele, jeśli w polach adv1-4 będą wartości odpowiadające kluczowi id z tabeli adventure.
2. Możesz powiązać tabele przez tabelę pośrednią user_adventure (pozbywasz się pól adv1-4): Jeśli np. użytkownik 1 "ma" przygody 1 i 4, to wartości w tej tabeli będą następujące: 1,1 1,4 Jeśli dodatkowo jest ważna numeracja przygód, to w tej tabeli można dodać dodatkową kolumnę z numerem. Dla powyższego przykładu byłoby: 1,1,1 (jeśli przygoda id=1 jest pierwsza, czyli odpowiada wypełnieniu adv1=1) 1,4,2 (jeśli przygoda id=4 jest druga, czyli odpowiada wypełnieniu adv2=4) |
|
|
![]()
Post
#3
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
No właśnie takiego powiązania nie ma, więc się pytałem, czy mogę powiązać po nazwie. Czyli najlepszym rozwiązaniem będzie dodanie tabeli i łączenie po ID.
Generalnie problem jest taki. User1 odpala przygodę i zaprasza User3 i User4. Należy zanotować ich ID, wraz z datą. I to robię. Ale chcąc wyświetlić jakiekolwiek statystyki, jet już problem. Chyba, że do tej tabeli zapiszę też nazwę przygody... ale to nieprofesjonalne ;p |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 807 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
To jakie wartości obecnie przechowujesz w adv1-4, 0 lub 1?
To nie jest dobry pomysł, bo wtedy musi być założenie, że id w adventure mają zawsze numerację od 1-4 lub inną ale ciągłą. Gdyby były tam wartości id przygód, to już lepiej. Ale ogranicza Cię to do 4-ech przygód. Najlepszym rozwiązaniem jest tabela przejściowa. |
|
|
![]()
Post
#5
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Trzymam tam statystyki, ile kto i komu.
Mógłbym zliczać rekordy, ale chciałem zrobić to jak najprościej, żeby nie ukręcić bazy... no i muszę liczyć na moje umiejętności a nie jestem profesjonalistą. Bo w sumie mam już trzecią tabelę:
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 807 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ta też powinna być rozbita.
W drops zostaje id, adv, datetime. Klucz główny na id+adv. Dodatkowa tabela drops_user: id, adv, id_user, wartość. Klucz obcy id+adv (do drops) oraz id_user (do users). |
|
|
![]()
Post
#7
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Nie, po co rozbita. Trzymam tam ID przygody i ID userów z datą a w tabeli users miałem te staty. To ew. dla ułatwienia mógłbym dać nową tabelę do statystyk, gdzie na bieżąco uaktualniał bym stan przygód
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 807 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dlatego, że ograniczasz liczbę userów do 3-ech i komplikujesz potencjalne zapytania.
Chyba, że specyfika "gry" jest taka, że w rozgrywce bierze udział 3-ech graczy. To już Twoja decyzja. |
|
|
![]()
Post
#9
|
|
Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Graczy jest więcej, ale w rozgrywce bierze udział 2 lub 3.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.10.2025 - 11:22 |