Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    29

    match against su più tabelle!

    Ciao a tutti!
    ho da poco imparato questa opzione di fulltext search ho cercato in lungo ed in largo, ma non ho trovato come fare la ricerca fulltext su più tabelle. cioè con un JOIN nella query.
    Il mio database contiene gli uccelli imbalsamati tenuti in un museo. Ho 3 tabelle.
    una chiamata "uccelli" che contiene tra le altre queste colonne: nome (varchar), id_ordine (int), id_famiglia (int).
    Una tabella chiamata "ordine" che contiene due colonne id (int), nome (varchar).
    e una tabella chiamata "famiglia" che contiene le due colonne iid (int), nome (varchar).

    Quindi per ottenere delle righe contenenti nome, ordine e famiglia , faccio semplicemente un join tra le tre tabelle.

    Ma per fare la ricerca fulltext? come faccio?? ho provato questa query qua:
    SELECT uccelli.* , MATCH(famiglia.nome, ordine.nome, uccelli.genere_specie ) AGAINST('Ardeola ralloides') AS attinenza
    FROM uccelli JOIN ordine JOIN famiglia
    on uccelli.famiglia=famiglia.id AND uccelli.ordine=ordine.id
    WHERE MATCH(famiglia.nome, ordine.nome, uccelli.genere_specie ) AGAINST('Ardeola ralloides') ORDER BY attinenza DESC
    Ma mi dice che è sbagliato il "match" . Se invece il match metto solo una tabella (esempio. famiglia.nome , o uccelli.genere_specie) .

    come è possibile farla funzionare?

    grazie

  2. #2
    non credo si possa fare perche' il match ... against e' basato su un indice full text, ed anche perche' non vedo l'utilita' di una ricerca full text multi-tabella nel tuo caso.

    Se cerchi un dato specifico lo troverai solo nella sua tabella e non nelle altre. Se cerchi una famiglia non puoi trovarla nell'ordine, se cerchi un ordine non puoi trovarlo nella nome specie.

    Metti per esempio che tu voglia cercare tutte le specie "ralloides" a prescindere dal genere ... le varie famiglie e ordini che eventualmente fossero presenti le ricaverai dagli id associati e non troverai mai un ordine od una famiglia chiamata "ralloides".

    Non capisco anche a che ti serve una ricerca full text nei vari nomi. Basta ed avanza un like. Potrei capirlo se tu dovessi cercare una stringa in un testo di descrizione. Ma nei nomi ...

    Come suggerimento ti direi di dividere in due il campo genere_specie come divideresti in un anagrafico nome e cognome. Ti faciliterai la vita per l'ordinamento dei dati ed anche nella ricerca.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.