Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySql] wyszukiwanie MATCH () AGAINST ()
Forum PHP.pl > Forum > Przedszkole
vokiel
Mam taki problem, z którym sobie nie dokońca radzę. Mam wyszukiwarkę na stronie działającą na zasadzie
MATCH (`kolumna`) AGAINST ('szukany ciag'). Metoda ta wyszukuje dane z uporządkowane w porządku wyznaczonym przez odpowiednie wartości liczbowe, wskazujące na stopień podobieństwa między wzorcem, a znalezionymi danymi. Chciałbym wyświetlic wyniki posortowane wg trafności, ale pogrupowane wg kategorii.
  1. SELECT DISTINCT `KATEGORIA_ARTYKULU`.`NAZWA` AS KATEGORIA,
  2. `ARTYKUL`.`ID_ARTYKULU` AS ID_ARTYKULU,
  3. CONCAT( `ARTYKUL`.`NAZWA` , ' ', `ARTYKUL`.`NAZWA2` ) AS ARTYKUL,
  4. `JEDNOSTKA`.`SKROT` AS JEDNOSTKA,
  5. `ARTYKUL`.`STAN` - `ARTYKUL`.`DO_ODBIORCOW` AS STAN,
  6. IFNULL( `ARTYKUL`.`CENA_PROMOCJI_N` , `CENA_ARTYKULU`.`CENA_NETTO` ) AS `CENA`,
  7. MATCH (`ARTYKUL`.`NAZWA`) AGAINST ('".$query_string_where."') AS licznik_waznosci
  8. FROM KATEGORIA_ARTYKULU, ARTYKUL, JEDNOSTKA, CENA_ARTYKULU, KONTRAHENT
  9. WHERE MATCH (`ARTYKUL`.`NAZWA`) AGAINST ('".$query_string_where."') AND JEDNOSTKA.ID_JEDNOSTKI = ARTYKUL.ID_JEDNOSTKI AND CENA_ARTYKULU.ID_ARTYKULU = ARTYKUL.ID_ARTYKULU AND ARTYKUL.ID_KATEGORII = KATEGORIA_ARTYKULU.ID_KATEGORII AND KATEGORIA_ARTYKULU.ID_KATEGORII = ARTYKUL.ID_KATEGORII AND ARTYKUL.RODZAJ = 'Towar' AND ARTYKUL.ZABLOKOWANY =0 AND CENA_ARTYKULU.ID_CENY =".$id_ceny." AND ARTYKUL.ID_ARTYKULU <>0
  10. GROUP BY `KATEGORIA`, `ID_ARTYKULU`
  11. ORDER BY `licznik_waznosci` DESC LIMIT 0, 200

ale wyniki wyswietlaja mi się np tak:
Kod
SIECI            6398    ROUTER ASUS WL-600G/13/P_EU             szt.    0.000000    240.9000    7.64889669418335
modem/switch    5745    ROUTER EDIMAX BR-6104K 1X WAN 4X LAN        szt.    0.000000    77.4500        5.01729488372803
modem/switch    5306    ROUTER ALLIEDT AT-AR415S VPN 1PIC SEC     szt.    1.000000    1174.0000    4.96332025527954
modem/switch    5900    ROUTER D-LINK DSL-2500U ADSL (...)    szt.    0.000000    72.9500        4.91049480438232
monitory        5863    PANEL ASUS MM17DE-B                     szt.    7.000000    491.4000    2.60508131980896
obudowy        6409    OBUDOWA ASUS TA-951 350W                 szt.    3.000000    143.0000    2.57644033432007
inne            6034    CZYTNIK KART ASUS FRONTLINKER(...)     szt.    2.000000    122.9500    2.57644033432007
obudowy        6408    OBUDOWA ASUS TA-881 350W                 szt.    3.000000    115.5000    2.57644033432007
płyta głowna    4560    ASUS P5W DH DELUXE S775 2XGBL WI-FI     szt.    2.000000    433.6100    2.54842257499695
notebook        6261    ASUS X50N TUR55X2/1GB/160GB/(...)        szt.    0.000000    2171.3100    2.52100729942322
płyta głowna    6110    ASUS P5B-MX I945GZ S775 DDR2 PCI         szt.    10.000000    162.3000    2.52100729942322

a chciałbym, żeby wyświetlały się tak:

Kod
SIECI            6398    ROUTER ASUS WL-600G/13/P_EU             szt.    0.000000    240.9000    7.64889669418335
modem/switch    5745    ROUTER EDIMAX BR-6104K 1X WAN 4X LAN        szt.    0.000000    77.4500        5.01729488372803
modem/switch    5306    ROUTER ALLIEDT AT-AR415S VPN 1PIC SEC     szt.    1.000000    1174.0000    4.96332025527954
modem/switch    5900    ROUTER D-LINK DSL-2500U ADSL (...)    szt.    0.000000    72.9500        4.91049480438232
monitory        5863    PANEL ASUS MM17DE-B                     szt.    7.000000    491.4000    2.60508131980896
obudowy        6409    OBUDOWA ASUS TA-951 350W                 szt.    3.000000    143.0000    2.57644033432007
obudowy        6408    OBUDOWA ASUS TA-881 350W                 szt.    3.000000    115.5000    2.57644033432007
inne            6034    CZYTNIK KART ASUS FRONTLINKER(...)     szt.    2.000000    122.9500    2.57644033432007
płyta głowna    4560    ASUS P5W DH DELUXE S775 2XGBL WI-FI     szt.    2.000000    433.6100    2.54842257499695
płyta głowna    6110    ASUS P5B-MX I945GZ S775 DDR2 PCI         szt.    10.000000    162.3000    2.52100729942322
notebook        6261    ASUS X50N TUR55X2/1GB/160GB/(...)        szt.    0.000000    2171.3100    2.52100729942322

czyli jeśli już wystąpi jakaś kategoria, to żeby wyświetlić wszystkie artykuły w tej kategorii.
Czy da się w ogóle to zrobić w MySQL'u, czy trzeba to oprawiać już w php?
SebaZ
  1. ORDER BY `KATEGORIA`, `licznik_waznosci` DESC LIMIT 0, 200


A tak próbowałeś?snitch.gif
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.