Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Podobne rekordy w bazie mysql
kajzur
post 22.08.2012, 23:12:56
Post #1





Grupa: Zarejestrowani
Postów: 385
Pomógł: 26
Dołączył: 22.03.2008
Skąd: TM

Ostrzeżenie: (0%)
-----


Witam.. Czy istnieje takie zapytanie które by jakoś posegregowało mi bazę danych wg podobnych rekordów? I mam na myśli coś lepszego niż order by.

Rekordów jest ponad 10 tys.


--------------------
Zapraszam na mojego bloga. Dowiedz się jak uzyskać darmowy, zaufany certyfikat albo jak rozpoznawać głos ;)
Go to the top of the page
+Quote Post
YaQzi
post 22.08.2012, 23:14:54
Post #2





Grupa: Zarejestrowani
Postów: 94
Pomógł: 31
Dołączył: 12.10.2008
Skąd: WAT

Ostrzeżenie: (0%)
-----


skoro masz na mysli coś lepszego niż order by to powiedz co masz na myśli. Przykład?


--------------------
 Wszystkie wielkości świata nie są tyle warte, co dobra przyjaźń...
Go to the top of the page
+Quote Post
kajzur
post 22.08.2012, 23:26:24
Post #3





Grupa: Zarejestrowani
Postów: 385
Pomógł: 26
Dołączył: 22.03.2008
Skąd: TM

Ostrzeżenie: (0%)
-----


Może powiem co dla mnie w tym przypadku znaczy "podobny" - tzn długość może być rózna. Podobne to takie które mogą mieć białe znaki np:

alaa jest podobny do al aa

mogą różnić się brakiem polski znaków, np:

wąż podobny jest do waz

itp.. Mam w bazie danych tekst od userów. Niektórzy wpisują z polskimi znakami, niektórzy bez, czasami jakies dziwne spacje znikąd wstawiają.. Chciałbym to jakoś ogarnać, bo duplikaty nie są mi potrzebne..


--------------------
Zapraszam na mojego bloga. Dowiedz się jak uzyskać darmowy, zaufany certyfikat albo jak rozpoznawać głos ;)
Go to the top of the page
+Quote Post
alegorn
post 23.08.2012, 08:07:43
Post #4





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


poszukaj algorytm levenshteina
o ile wiem, sa juz gdzies gotowe procedury na mysql...



hmmmm nawet juz znalazlem : http://www.artfulsoftware.com/infotree/queries.php

j.
Go to the top of the page
+Quote Post
kajzur
post 23.08.2012, 11:02:55
Post #5





Grupa: Zarejestrowani
Postów: 385
Pomógł: 26
Dołączył: 22.03.2008
Skąd: TM

Ostrzeżenie: (0%)
-----


Rozumiem że Ci chodzi o http://www.artfulsoftware.com/infotree/queries.php#552 ?smile.gif Tylko że ta funkcja to ona sobie przyjmuje 2 varchary.. Więc Jak ja mogę to puścić po całej tabeli? I ogólnie to wklejając tę funkcje w phpmyadmin jako zapytanie sql to wypluwa błędy;>

Ps. Widze tez implelentacje tej funkcji w PHP. Dużym overkiller może byc pobranie danych i puszcze przez tę funkcje?

  1. foreach($e as $t){
  2.  
  3. foreach($e as $o){
  4. if(levenshtein(ciach($t->tresc, 255), ciach($o->tresc,255))<4 and $t->tresc[1]==$o->tresc[1]){
  5.  
  6. echo $t->id.' podobne jest do '.$o->id.'<br>czyli:<span style="color:red;">'.$t->tresc.' <u style="color:blue;">podobne</u> do '.$o->tresc.'</span><br>';
  7.  
  8.  
  9. }
  10. }
  11. }

Taki kodzik i działa spoko. Dzięki za pomoc!

Ten post edytował kajzur 23.08.2012, 10:10:16


--------------------
Zapraszam na mojego bloga. Dowiedz się jak uzyskać darmowy, zaufany certyfikat albo jak rozpoznawać głos ;)
Go to the top of the page
+Quote Post
Tomplus
post 23.08.2012, 11:12:38
Post #6





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


pewnie chodzi Ci o zapytani GROUP BY

  1. SELECT id FROM produkt GROUP BY model ORDER BY nazwa ASC, model ASC";


tylko że jak będziesz miał 3 podobne rekordy to zrobi się z tego 1 w wyniku.
Go to the top of the page
+Quote Post
alegorn
post 23.08.2012, 13:45:35
Post #7





Grupa: Zarejestrowani
Postów: 341
Pomógł: 40
Dołączył: 23.06.2009

Ostrzeżenie: (0%)
-----


@kajzur:: - tam miałeś przykład 2 funkcji (poczytaj o funkcjach i procedurach składowanych)
dla mnie jest to wygodniejsze, ale w php tez zadziała tak samo.

aby to się mogło wykonać - musisz mieć możliwość zakładania procedur i funkcji
powiem uczciwie ze jeśli tego nie robiłeś wcześniej - a nie jesteś fascynatem mysql'a to lepiej to zrobić w php smile.gif,
z poziomy samego mysql'a to jeszcze musiałbyś utworzyć dodatkowo procedurę z cursor'em zrobić i przejść po wszystkich rekordach. da się wink.gif

@Tomplus:: nie chodzi o takie same rekordy, ale o podobne! group by nie zadziała tutaj.
Go to the top of the page
+Quote Post
kajzur
post 23.08.2012, 13:54:07
Post #8





Grupa: Zarejestrowani
Postów: 385
Pomógł: 26
Dołączył: 22.03.2008
Skąd: TM

Ostrzeżenie: (0%)
-----


Zadziałało tak jak chciałem w PHP smile.gif Mysql znam, ale jak widać... Nie jakoś super smile.gif


--------------------
Zapraszam na mojego bloga. Dowiedz się jak uzyskać darmowy, zaufany certyfikat albo jak rozpoznawać głos ;)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 04:54