sql >> Databáze >  >> RDS >> Sqlserver

SQL Server Full Text Search - Vytvořte jeden vypočítaný sloupec

můžete použít spojení k vyžadování shody v adrese i jménu osoby.

SELECT
   (keyTblSp.RANK * 3) AS [Rank],
    sp.*
FROM Employee sp    
    INNER JOIN 
        CONTAINSTABLE(Employee, *, 'John OR Hamburg', 1000) AS keyTblSp
        ON sp.EmployeeId = keyTblSp.[KEY]    
join
(
    SELECT
       (keyTbl.RANK * 2) AS [Rank],
        sp.*
    FROM Employee sp    
    LEFT OUTER JOIN [Address] addr ON addr.EmployeeId = sp.EmployeeId 
    INNER JOIN 
        CONTAINSTABLE([Address], *, 'John OR Hamburg', 1000) AS keyTbl
        ON addr.AddressId = keyTbl.[KEY]
UNION ALL
    SELECT
       (keyTbl.RANK * 2) AS [Rank],
        sp.*
    FROM Employee sp    
    LEFT OUTER JOIN [Address] addr ON addr.EmployeeId = sp.EmployeeId 
    LEFT OUTER JOIN [City] cty ON cty.CityId = addr.CityId
    INNER JOIN 
        CONTAINSTABLE([City], *, 'John OR Hamburg', 1000) AS keyTbl
        ON cty.CityId = keyTbl.[KEY]  
) addr_matches
on addr_matches.EmployeeId = sp.EmployeeId

o kterých si myslím, že by vám poskytly vámi zadané výsledky, i když to samozřejmě vyžaduje hledaný výraz pro jméno i adresu, aby se vrátily jakékoli výsledky. Nespecifikoval jsi, co se stane, když někdo jen hledá 'John', pokud vždy dostaneš jméno i adresu, myslím, že výše uvedené bude fungovat dobře.



  1. Porovnání MySQL a LIKE s %

  2. časový limit dotazu python MySQLDB

  3. nesprávná syntaxe poblíž 's'. neuzavřená uvozovka za znakovým řetězcem ')'

  4. Spočítat všechny záznamy, které neexistují, do jiné tabulky - SQL Query