SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.04.2009 09:57:28

stas43
Участник
Зарегистрирован: 24.04.2009
Сообщений: 6

Помогите построить запрос

Существует таблица:
Город             Улица             Дом
Москва           Первая           2, 4, 5, 5а, 6, 6а, 6б, 6/1, 8
Питер             Первая           2, 3, 4, 5, 5а, 6, 6а, 6б, 6/1, 8

Все поля текстовые. Можно ли как-то выбрать, скажем, Город при запросе ... where `Улица`='Первая' и `Дом`='3'

Неактивен

 

#2 24.04.2009 15:11:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Помогите построить запрос

У Вас не очень удачно построено хранение информации, соответственно, запросы по
такой таблице будут идти очень медленно (и в случае с домами могут быть разные
проблемы с написанием).

SELECT city FROM tablename WHERE street = 'Первая' AND house LIKE '% 3,%';

Обратите внимание на пробел и запятую. Без них также будут находиться строки с домом
13, например. С другой стороны, дом 2 и дом 8 из примера таким образом находиться не
будут (нет пробела и запятой, соответственно).

--

Я бы сделал всю эту штуку в виде трех табличек:
cities (id, name)
streets (id, name)
houses (city_id, street_id, house_no)   <--- для каждого дома своя отдельная строка!

Тогда запросы получатся аккуратнее и будут выдавать результаты даже в случае первого
и последнего домов

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson