sql >> Database >  >> RDS >> Mysql

zoeken op relevantie in meerdere gerelateerde tabellen

Op basis van het antwoord in de link die je hebt gepost, zou je zoiets als dit kunnen doen

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

Ik weet niet zeker hoe goed dit zou presteren. Misschien kun je beter naar een andere oplossing kijken, zoals Solr, Lucene of zelfs een NoSQL-opslagengine.



  1. Reeds aangevinkte selectievakjes in PHP bijwerken

  2. Hoe substrings wijzigen?

  3. Onverwacht type variabele geretourneerd door Receive-Job

  4. Is er een manier om uw huidige gebruikersnaam in mysql te achterhalen?