2009-01-22 42 views
0

任何人都可以帮我试图编写SQL(MS SqlServer) - 我必须承认这不是最好的技能。编写SQL代码:与Yell.com功能相同

我想要做的是完全一样的功能出现在搜索框为Yell website

  • 搜索公司类型

  • 和/或公司名称

  • 和/或输入公司名称

  • in a Location

如果任何人都可以建议SQL代码您需要,以获得相同的功能叫喊来写 - 那将是巨大的。

回答

2

通常情况下,一个做这样的事情:

-- 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 + '%') 
0

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

但一般来说,你在找什么是

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

你需要的第一件事不是SQL代码,而是一个数据库设计。只有这样才能开始编写SQL。

匹配叫喊的功能

一个简单的表模式可能是这样的:

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' 

当然,真实世界的位置搜索将不得不使用确切的城市a nd状态或邮政编码查询,或其某种智能组合。然后一张真正的桌子会有更多的字段,如描述等等,但这是基本的想法。

+0

我有一个数据库设计必须是非常相似,破口大骂 - 我有公司的地址表(地址),我也有公司类型的表。 – Vidar 2009-01-22 16:30:56

相关问题