• User

    Ricerca Full Text con vincoli

    Ciao a tutti,
    ho un problema con la ricerca in un db mysql.
    Ho una tabella che contiene i records ed un campo priorità che ha valore 1,2 o 3 dove 1 è il più importante.
    Ora imposto la ricerca full text e lui mi restituisce i risultati corretti. Però vorrei poter "manipolare" questi risultati con il campo priorità e rendere più importanti i risultati che hanno priorità 1 di quelli che hanno priorità 3.
    In modo da ottenere il seguente output
    1 risultato priorità 1
    10 risultati priorità 2
    3 risultati priorità 3

    C'è modo di farlo senza fare 3 query al database?

    Grazie


  • User

    [php]
    SELECT priorita, COUNT( priorita )
    FROM banca
    GROUP BY priorita
    ORDER BY priorita
    [/php]

    restituisce una tabella formata da un campo priorita e un campo contenente il numero di record che hanno qulla priorita..:)..CIAO


  • User

    Ciao e grazie per la risposta

    ma... io dovrei avere sia i risultati in priorità 1 che quelli in 2 che quelli in 3 nei risultati della ricerca.

    questa è la mia query:

    SELECT *, MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') AS attinenza FROM records WHERE MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') ORDER BY attinenza DESC LIMIT 0,10

    In pratica vorrei fare qs:

    SELECT *, MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') AS attinenza FROM records WHERE priority ='1' AND MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') ORDER BY attinenza DESC LIMIT 0,1

    SELECT *, MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') AS attinenza FROM records WHERE priority ='2' AND MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') ORDER BY attinenza DESC LIMIT 0,10

    SELECT *, MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') AS attinenza FROM records WHERE priority ='3' AND MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') ORDER BY attinenza DESC LIMIT 0,3

    il tutto in un unica query.


  • User

    mmm..dovresti usare la UNION..

    [PHP]
    ( SELECT *, MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') AS attinenza FROM records WHERE priority ='1' AND MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') ORDER BY attinenza DESC LIMIT 0,1 )
    UNION
    ( SELECT *, MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') AS attinenza FROM records WHERE priority ='2' AND MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') ORDER BY attinenza DESC LIMIT 0,10 )
    UNION
    ( SELECT *, MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') AS attinenza FROM records WHERE priority ='3' AND MATCH(url,titolo,descrizione,parolechiave) AGAINST('$q') ORDER BY attinenza DESC LIMIT 0,3 )
    [/PHP]

    in questo modo unisci i risultati di tre query iverse in una sola..


  • User

    grazie così funziona!!!
    😉


  • User

    prego..:)..ciao