Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

tìm kiếm mức độ liên quan trên nhiều bảng có liên quan

Dựa trên câu trả lời trong liên kết bạn đã đăng, bạn có thể làm điều gì đó như thế này

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

Tôi không chắc điều này sẽ hoạt động tốt như thế nào. Bạn có thể nên xem xét một giải pháp khác như Solr, Lucene hoặc thậm chí là công cụ lưu trữ 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. Làm cách nào để sử dụng lại các giá trị auto_increment?

  2. làm thế nào để kiểm tra null hay không nếu kiểu dữ liệu mysql là dấu thời gian với giá trị mặc định là 0000-00-00 00:00?

  3. MySQL pid đã kết thúc (không thể khởi động mysql)

  4. Hàm PI () MySQL - Trả về giá trị của π (pi)

  5. MySQL:Tự động tăng chỉ với số chẵn hoặc số lẻ?