Mysql
 sql >> Baza danych >  >> RDS >> Mysql

wyszukiwanie trafności w wielu powiązanych tabelach

Na podstawie odpowiedzi w przesłanym linku możesz zrobić coś takiego

SELECT id,SUM(relevance) as total_relevance FROM (
SELECT 
    id, 
    (MATCH(title) AGAINST ('search string')) AS relevance
    FROM Cards
UNION
SELECT 
    Cards.id,
    (MATCH(brigade) AGAINST ('search string')) AS relevance
    FROM Brigades 
    INNER JOIN CardBrigades ON Brigades.id=brigade_id
    INNER JOIN Cards ON card_id=Cards.id 
UNION
SELECT 
    Cards.id,
    (MATCH(identifier) AGAINST ('search string')) AS relevance
    FROM Identifier 
    INNER JOIN CardIdentifier ON Identifier.id=identifier_id
    INNER JOIN Cards on card_id=Cards.id 
) AS combined_search 
GROUP BY id
HAVING total_relevance > 0

Nie jestem pewien, jak dobrze by to działało. Być może lepiej będzie przyjrzeć się innym rozwiązaniom, takim jak Solr, Lucene lub nawet silnik pamięci masowej NoSQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wstawić czas 2009-09-22 18:09:37.881 w MYSQL Mój typ kolumny to DateTime

  2. Ostrzeżenie PHP:mysqli::query():Nie można pobrać mysqli

  3. Włączanie ogólnego dziennika zapytań MySQL z JDBC

  4. Co jest nie tak z moim zapytaniem SQL Fiddle?

  5. #1214 — Użyty typ tabeli nie obsługuje indeksów FULLTEXT