Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 609
  • Last Modified:

Full Text Search CONTAINS error on column list - MS SQL 2000

I am working on a full text search query and am receiving the following error:

Line 8: Incorrect Syntax Near '('

Line 8 is as follows:
CONTAINSTABLE (Product, (Product_Name,Product_Desc,Product_ManufacturerPart,UPC,Manufacturer_Name,Searchable_Terms,Book_Author,Book_Type), '(Cannon NEAR digital NEAR rebel)', 10) AS KEY_TBL

The issue is with the column list:
(Product_Name,Product_Desc,Product_ManufacturerPart,UPC,Manufacturer_Name,Searchable_Terms,Book_Author,Book_Type)

When I replace this column list with an asterisk (*), the query works fine.

From MSDN.com:
column_list
    Indicates that several columns, separated by a comma, can be specified. column_list must be enclosed in parentheses. Unless language_term is specified, the language of all columns of column_list must be the same.

I am conforming to this - why am I getting an error?
SELECT 
    FT_TBL.Product_Name, 
    FT_TBL.Product_Desc, 
    KEY_TBL.RANK
FROM 
    production.dbo.product AS FT_TBL 
    INNER JOIN
        CONTAINSTABLE (Product, (Product_Name,Product_Desc,Product_ManufacturerPart,UPC,Manufacturer_Name,Searchable_Terms,Book_Author,Book_Type), '(Cannon NEAR digital NEAR rebel)', 10) AS KEY_TBL
        ON FT_TBL.Product_ID = KEY_TBL.[KEY]

Open in new window

0
trickyidiot
Asked:
trickyidiot
  • 2
  • 2
3 Solutions
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
please refer to the sql 2000 version of the syntax:
http://msdn.microsoft.com/en-us/library/aa258229(SQL.80).aspx
which does NOT have the (columnlist) variant of the syntax

the sql 2005/2008 versions do have that variant:
sql 2005:
http://msdn.microsoft.com/en-us/library/ms189760(SQL.90).aspx
sql 2008:
msdn.microsoft.com/en-us/library/ms189760.aspx

so, if you are indeed on sql 2000, you cannot use that syntax.
0
 
BrandonGalderisiCommented:
0
 
trickyidiotAuthor Commented:
Ok - I've moved to a less tempting solution, listed below

but I'm getting the same error - incorrect syntax near ')'
on the last line of the query
select 
    * 
from 
    product 
where 
    product_id in 
    (
        select distinct 
            p.product_id 
        from 
        (
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Product_Name, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Product_Desc, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Product_ManufacturerPart, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, UPC, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Manufacturer_Name, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Searchable_Terms, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Book_Author, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Book_Type, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
        )
    )

Open in new window

0
 
BrandonGalderisiCommented:
The problem now is that you aren't naming your derived table.  I added b to the next to the last line.
select 
    * 
from 
    product 
where 
    product_id in 
    (
        select distinct 
            p.product_id 
        from 
        (
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Product_Name, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Product_Desc, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Product_ManufacturerPart, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, UPC, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Manufacturer_Name, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Searchable_Terms, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Book_Author, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
 
            UNION ALL
 
            SELECT 
                p.product_id  
            FROM 
                product AS P 
                INNER JOIN 
                    CONTAINSTABLE(Product, Book_Type, 'cannon NEAR battery') AS KEY_TBL
                    ON p.Product_ID = KEY_TBL.[KEY] 
        ) b
    ) 

Open in new window

0
 
trickyidiotAuthor Commented:
Thanks guys!

I didn't even realize I was reading the wrong doc on msdn...
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 2
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now