Как сделать запрос в SQL Server, который сравнивает данные в базе данных - PullRequest
0 голосов
/ 16 июня 2011

В моей базе данных будет одно поле "Предпочтительное местоположение", которое содержит название города, например "Ахмадабад, Ананд, Барода"

В разделе работодателя, когда работодатель вводит местоположение "Ананд", будет выбрана вышеуказанная запись.
Как я могу сделать запрос, который ищет по всему городу с городом Ахмадабад, и при поиске будет отображаться эта запись

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Правильный ответ: вам нужно немного нормализовать схему SQL. Вам нужны три отдельные таблицы: customer, location и customer_locations. Таблица местоположений имеет ОДНУ запись на город, по крайней мере, с двумя столбцами: city_id и name. Таблица customer_locations содержит ровно два столбца: customer_id и city_id. Эта таблица называется таблицей поиска и позволяет определять отношения «многие ко многим».

Теперь ваш запрос будет немного сложнее, потому что вам придется использовать "соединения". Но со сложностью приходит гибкость - ваш поиск будет точным, и вы избежите проблем, таких как наличие записей со случайно написанными названиями городов (которые в конечном итоге не будут совпадать).

Я уверен, что вам придется провести немного больше исследований, но ваш запрос будет выглядеть примерно так:

select cust.*, city.* from customers cust inner join customer_locations cl on
cust.customer_id = cl.customer_id inner join locations city on cl.city_id = city.city_id
where city.name = 'Anand';
0 голосов
/ 16 июня 2011

Самый простой в использовании «LIKE»

Например:

select *
from MyTable
where Location like '%Ahmadabad%'

Однако, здесь также найдутся такие города, как «NewAhmadabad».Не уверен, что вы можете пренебречь.

Вы можете сделать что-то вроде этого, если вы не можете пренебречь:

select *
from MyTable
where 
    Location like '%,Ahmadabad,%' or 
    Location like 'Ahmadabad,%' or
    Location like '%,Ahmadabad'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...