Написание кода SQL: такая же функциональность, как Yell.com - PullRequest
0 голосов
/ 22 января 2009

Может кто-нибудь помочь мне с попыткой написать SQL (MS SqlServer) - я должен признать, что это не лучший навык.

То, что я хочу сделать, это точно такая же функциональность, как и для окон поиска для Yell веб-сайта т.е.

  • Поиск по типу компании

  • И / ИЛИ название компании

  • И / ИЛИ введите название компании

  • в локации

если кто-то может предложить код SQL , который вам нужно написать, чтобы получить те же функции, что и Yell - это было бы здорово.

Ответы [ 3 ]

2 голосов
/ 22 января 2009

Как правило, каждый делает что-то вроде этого:

-- 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 голосов
/ 22 января 2009

Сначала вам нужен не код 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'

Конечно, для поиска местоположения в реальном мире нужно будет использовать либо точный город и штат, либо поиск по почтовому индексу, либо какую-то разумную их комбинацию. И тогда в реальной таблице будет гораздо больше полей, таких как описания и т. Д. Но это основная идея.

0 голосов
/ 22 января 2009

Можете ли вы предоставить макет базы данных (схему), с которой будет работать sql? Было бы необходимо дать вам точный результат.

Но, вообще говоря, вы ищете

SELECT * FROM tablename WHERE companyType = 'type' OR companyName = 'companyName' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...