![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 6.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Ostatnio tak myślę nad jednym zapytaniem, lub kilkoma.. lub czymkolwiek.. co prawdopodobnie będę potrzebował. Nie mogę jakoś wymyślić nic sensownego. Aczkolwiek, nie jest to chyba proste zadanie ;-) Powiedzmy, że mamy taką tabelę mysql: id | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | n Id standardowo będzie zwiększane o 1 przy dodawaniu nowego szeregu danych, a w komórkach 1,2,3 itd będą wstawiane tylko i wyłącznie cyfry typu INT. Prawdopodobnie przedział od 1 - 9, chociaż myślę, że nie ma to tutaj znaczenia. Jak widać na końcu dałem n, bo z czasem ilość kolumn tabeli może się zwiększać o dalsze, nazwane n+1 i także zawierające INT. Więc dajmy na to, niech na początku będzie id i 8 kolumn odnośnie danych. (i = id, skróciłem aby "tabela" była równa ;-)) i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 1 | 3 | 3 | 3 | 0 | 1 | 3 | 2 | 1 2 | 2 | 2 | 5 | 1 | 2 | 9 | 5 | 2 3 | 3 | 3 | 3 | 0 | 2 | 4 | 1 | 5 4 | 3 | 3 | 3 | 4 | 1 | 3 | 2 | 0 I teraz główna kwestia. Wybieramy sobie jakiś szereg, np. o id 1 i według niego szukamy n najbardziej pasujących do niego. Czyli tutaj dla przykładu, najwięcej zgadza się z szeregiem 4, bo 75% liczb w kolumnach się pokrywa, później szereg 3 - 50% no i na końcu szereg 2, który ma 0% zgodności. Limit to np. 10 najbardziej trafnych wyników. Wszystko posortowane od najtrafniejszego do najmniej trafnego. I także wynik procentowy względem każdego wyszukanego wyniku. (Wiadomo także, że może się okazać, iż jest więcej szeregów pasujących procentowo.) Mam nadzieję, że każdy zrozumie o co mi chodzi ;-> Jakby ktoś miał pomysły, jak takie coś uzyskać, to chętnie posłucham ;-) Pozdrawiam. |
|
|
![]() |
![]() ![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 53 Dołączył: 10.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
nie mogłeś wymyślić bardziej skomplikowanego sposobu na zabicie mysql'a? (IMG:style_emoticons/default/haha.gif)
W Windows wchodzisz menu start -> panel sterowania -> narzędzia administracyjne -> usługi -> prawym przyciskiem na mysql -> stop a na przykłąd w ubuntu wpisujesz w terminal sudo /etc/init.d/mysql stop po pierwsze musiałbyś zmienić nazwy kolumn. na przykłąd nadać im przedrostek c bo inaczej się może wykrzaczyć. Ale ok na razie zostaw jak jest ;P po drugie musiałbyś utworzyć procedurę mysql, która w pętli "przeleci" to za ciebie (IMG:style_emoticons/default/tongue.gif) Po nie wiem dwóch godzinach intensywnego kodu (IMG:style_emoticons/default/biggrin.gif)
wywołujesz to
I prośba - nie każ mi tego tłumaczyć. Kolejnego litra wódki nie zniosę (IMG:style_emoticons/default/biggrin.gif) //edit no dobra przesadziłem (IMG:style_emoticons/default/biggrin.gif) to była godzina 20 i litr też nie poszedł. mam jeszcze pół szklanki na dnie (IMG:style_emoticons/default/biggrin.gif) Ten post edytował jmail 16.10.2009, 04:35:13 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 6.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Huh ;-) Jak tylko będę miał chwilę czasu to sprawdzę to.. Ale rzeczywiście gdy rekordów będzie dużo.. i gdyby takie coś wykonać jednoczenie ileś razy.. Muszę pomyśleć chyba nad lepszym rozwiązaniem takiego porównywania.
Ale dzięki za kod ;-) |
|
|
![]() ![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 53 Dołączył: 10.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
może napisz do czego to potrzebujesz to może coś lepszego się wymyśli. ale niczego szybszego niż takie zapytanie nie wymyślisz. Jeżelimówimy o danych z bazy. Taką samą ilość zapytań bedziesz musiał wykonać przez PHP a przez bazę szybciej to pójdzie.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 6.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
No ja tylko szukam sposobu jak najlepiej dokonać takiego porównania. W sumie nawet te cyfry mogą być ułożone jedna po drugiej i zapisane jako ciąg w bazie danych. Ale czy to coś zmieni..
|
|
|
![]() ![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 53 Dołączył: 10.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
ale kurde do czego to potrzebujesz? co będziesz porównywał? rozmairy stóp czy co?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 26 Dołączył: 19.01.2007 Ostrzeżenie: (0%) ![]() ![]() |
jeżeli przeprojektujesz tabelę do postaci trzech kolumn:
numer_serii numer_pomiaru_w_serii, wartosc_pomiaru to rozwiazanie będzie prawie banalne:
sprawdzane na tabeli:
Ten post edytował kitol 19.10.2009, 10:48:14 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 18:40 |