Zastanawiam się czy przez MySQL jestem w stanie coś takiego zrobić czy większą część pracy zrobić w PHP.
Mam tablicę o X-ilości. W tablicy tej znajdują się indeksy, np:
0: word: test type: 1 amount: 41 idList: 56,65,258,566,757,957,958,990,993,1008,1025,1327,1250,1251,1277,1418,1419,1420,1
421,1429,1431,1435,1439,1440,1450,1451,1474,1478,1483,1504,1510,1511,1512,1523,15
43,1544,1545,1557,1658,1728,1739 1: word: słowa type: 1 amount: 7 idList: 990,993
Mam tabelę o strukturze:
id (int), price (float), name (varchar) i pozostałe pola (varchar/text/int i wiele innych - łącznie ok 30). Ale całość tyczy się "ID"
normalny SQL jest taki:
SELECT * FROM TABLE WHERE `name` LIKE '%test% order by `name` ASC'
Co prawda ciut bardziej udziwniony, bo jeszcze pobieranie obrazków itd - ale można do niego uprościć.
Są 3 sortowania:
Price ASC/DESC
Name ASC/DESC
None - w ogóle brak szyfrowania
Teraz jest jednak "drobna" zmiana i powinno być sortowanie domyślne za pomocą:
'Ilość wystąpień danego ID' DESC
Czyli przykładowo:
990,993 (bo oba są 2x i dalej: ),56,65,258
Rozważam aby zrobić coś takiego za pomocą PHP, coś na zasadzie:
- tworzę tablicę z ID, sortowaną po ilości wystąpień
- wybieram odpowiednie ID (limit zamiast w mysql będzie w php)
- sortuję wg kolejności z tablicy
- zwracam
Czy jednak coś takiego jesteśmy w stanie zrobić za pomocą MySQL? Będzie to w miarę szybko działać?