【问题标题】:Writing SQL code: same functionality as Yell.com编写 SQL 代码:与 Yell.com 相同的功能
【发布时间】:2009-01-22 16:18:41
【问题描述】:

任何人都可以帮助我尝试编写 SQL (MS SqlServer) - 我必须承认这不是最好的技能。

我想要做的功能与 Yell website 的搜索框显示的功能完全相同,即

  • 搜索公司类型

  • AND/OR 公司名称

  • 和/或输入公司名称

  • 在某个位置

如果有人能推荐您需要编写的 SQL 代码,以便获得与 Yell 相同的功能,那就太好了。

【问题讨论】:

    标签: sql sql-server-2005


    【解决方案1】:

    通常,一个人会做这样的事情:

    -- All these are NULL unless provided
    DECLARE @CompanyType AS varchar
    DECLARE @CompanyName AS varchar
    DECLARE @Town AS varchar
    
    SELECT *
    FROM TABLE_NAME
    WHERE (@CompanyType IS NULL OR COMPANY_TYPE_COLUMN LIKE '%' + @CompanyType  + '%')
        AND (@CompanyName IS NULL OR COMPANY_NAME_COLUMN LIKE '%' + @CompanyName + '%')
        AND (@Town IS NULL OR TOWN_COLUMN LIKE '%' + @Town + '%')
    

    或者这个(只匹配带有通配符的列的开头):

    -- All these are NULL unless provided
    DECLARE @CompanyType AS varchar
    DECLARE @CompanyName AS varchar
    DECLARE @Town AS varchar
    
    SELECT *
    FROM TABLE_NAME
    WHERE (@CompanyType IS NULL OR COMPANY_TYPE_COLUMN LIKE @CompanyType  + '%')
        AND (@CompanyName IS NULL OR COMPANY_NAME_COLUMN LIKE @CompanyName + '%')
        AND (@Town IS NULL OR TOWN_COLUMN LIKE @Town + '%')
    

    【讨论】:

      【解决方案2】:

      您能否提供运行 sql 的数据库布局(模式)?有必要给你一个准确的结果。

      但一般来说你要找的是

      SELECT * FROM tablename WHERE companyType = 'type' OR companyName = 'companyName' 
      

      【讨论】:

        【解决方案3】:

        您首先需要的不是 SQL 代码,而是数据库设计。只有这样,开始写 SQL 才有意义。

        与 Yell 的功能相匹配的简单表架构可能类似于:

        CREATE TABLE Company (
            company_id INT NOT NULL PRIMARY KEY IDENTITY(1,1),
            company_name VARCHAR(255) NOT NULL,
            location VARCHAR(255) NOT NULL
        )
        

        然后你会使用 SQL 来按名称搜索它:

        SELECT * FROM Company WHERE company_name like '%text%'
        

        或按位置:

        SELECT * FROM Company WHERE location = 'Location'
        

        当然,真实世界的位置搜索必须使用确切的城市和州,或邮政编码查找,或它们的某种智能组合。然后一个真正的表格会有更多的字段,比如描述等。但这是基本的想法。

        【讨论】:

        • 我有一个与 Yells 非常相似的数据库设计 - 我有带有位置(地址)的公司表,我也有一个公司类型表。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-27
        • 2021-09-24
        • 1970-01-01
        • 1970-01-01
        • 2019-03-13
        相关资源
        最近更新 更多