Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Najbardziej pasujące wyniki
Forum PHP.pl > Forum > Przedszkole
DeeZyy
Hej
mam taki schemat bazy danych

lub jak kto woli kod sql z przykładowymi danymi http://nopaste.info/4a1913ed7e.html
wkleiłem tam ponieważ tutaj bardzo rozciągał post nie potrzebnie.
Mam 3 tabelki: weapons, skills oraz peoples
Oraz 2 tabelki łączące (relacja wiele do wielu): weapons_skills, peoples_skills
Jeden człowiek może mieć wiele zdolności tak samo broń żeby ją obsługiwać wymaga wielu zdolności teraz jakimś zapytaniem chciałbym dla każdego człowieka (peoples) na podstawie jego zdolności jakie ma (peoples_skills) dopasować jak bardzo pasuje do niego ta broń (weapons) na podstawie tabelki (weapons_skills),
czyli jeżeli broń ma wszystkie skille jakie posiada człowiek lub więcej niż ten człowiek to będzie 100% dopasowania, jeżeli nie ma wcale wspólnych to 0% i posródku wiadomo 10 ,20% czy ile tam wyjdzie, czy da się takie coś na takiej strukturze? jak nie to jak powinna wyglądać struktura? albo PHPem to zrobić? Bardzo prosze o pomoc
bialko0019
Każdy może mieć swoje zdanie, ale ja bym to inaczej zrobił, ja bym nie używał relacji wiele-do-wielu, bo potem właśnie wychodzą takie problemy. Ja bym zrobił tak: mamy tabele:

- people
- skills_peole
- items ( bo co jeśli byś chciał mieć więcej rzeczy niż tylko bronie? Klient może Ci potem zażyczyć sobie ;-))

People to miały by ID_USER i inne ważne dla Ciebie rzeczy. Skills_people by miało kolumnę ID, ID_USER oraz np. VALUE i TYPE ( wartości ujemne i dodatnie, mogą być zmiennoprzecinkowe wtedy jest bardziej elastycznie). Następnie Items - ma rzecz jasna ID, REQIMENT_SKILL i np. TYPE i NAME. Teraz patrz jak prosto można to połączyć.

Masz kilka userów od ID: 1, 2 oraz 3. To w tabeili PEOPLE.
Każdy user zdobywa umiejętności, czyli w tabeli skills_people dodajez rekordy dla ID: 1, 2 i 3 - ale w value wpisujesz jednemu 2, 100, a innemu -10.

Jak wyciągnąć teraz, który użytkownik ma najwięcej skilli i do danego przedmiotu? Banalnie prosto wink.gif Robisz podzapytanie, w którym wyciągasz wszystkie typy umiejętności oraz przedmiot, np. za pomocą GROUP BY. Na ich podstawie zapytaniem lub w php`ie wyciągasz osoby, których suma VALUE jest większa niż zero dla danego TYPE. Sortujesz i bardzo prosto wyciągasz wink.gif Nie masz tylu kolumn i tabel tylko 3 tabele i kilka zwykłych kolumn wink.gif

Jak będziesz potrzebował dalej pomocy śmiało pisz, zaradzę i pomogę ;-)
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.