Załóżmy, że mam tabelę MySQL, people
. Każdy rekord zawiera różne właściwości, spośród nich: favourite_colour
, country
i .Pobieranie rekordów MySQL w oparciu o zmienny zestaw punktów porównania
Co chcę zrobić, to pobrać rekordy z tej tabeli przez ich podobieństwo do zestawu określonych parametrów. Na przykład "Czerwony", "Stany Zjednoczone" i "18-25" najlepsze wyniki będą tymi rekordami, które pasują do wszystkich trzech. Będą to mecze w 100%.
Chciałbym jednak również pobrać rekordy pasujące do dowolnej kombinacji dwóch parametrów (dopasowanie 66%) lub dowolnego parametru (dopasowanie 33%). Ponadto chciałbym móc zdefiniować dodatkowe punkty porównania (np. underwear_type
, marital_status
itd.).
Czy istnieje relatywnie skuteczne rozwiązanie tego problemu?
To jest całkiem sprytne! –
To naprawdę bardzo dobry pomysł. Łatwo byłoby dodać do tego również ważenie, mnożąc jeden z wyników. –
To naprawdę świetne rozwiązanie. Kilka uwag/pytań: z tego, co mogę powiedzieć, SQL nie zezwala na aliasy kolumn (np. Match_score) w klauzulach WHERE. Ponadto, nie sądzę, że funkcja SUM() zachowuje się tak, jak sugeruje twoje zapytanie (nie akceptuje wielu argumentów); Dokumentacja MySQL wskazuje, że SUM() jest tylko funkcją agregacji GROUP BY. Usunięcie klauzuli WHERE i zastąpienie sumy operatorami dodającymi sprawiło, że funkcja działa jak urok. –