Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Возможно ли составить такой запрос? (seyfer) 13/12/2011 - 07:39:28
      Re: Возможно ли составить такой запрос? (seyfer) 13/12/2011 - 09:08:11
      Re: Возможно ли составить такой запрос? (seyfer) 13/12/2011 - 10:51:24
      Re: Возможно ли составить такой запрос? (Akina) 13/12/2011 - 18:05:22
      Re: Возможно ли составить такой запрос? (seyfer) 14/12/2011 - 04:56:35
      Re: Возможно ли составить такой запрос? (seyfer) 15/12/2011 - 12:39:18

> Original message text:
> From: seyfer - 13/12/2011 - 07:39:28
> Subject:Возможно ли составить такой запрос?
> -----------------
> Добрый день.
>
> Есть две базы на 5000 и 20000 записей:
>
> --
> -- Table structure for table `debtors`
> --
>
> CREATE TABLE IF NOT EXISTS `debtors` (
> `users_id` int(11) NOT NULL DEFAULT '0',
> `full_name` varchar(255) NOT NULL,
> `actual_address` varchar(255) NOT NULL,
> `building` varchar(15) NOT NULL,
> `flat_number` varchar(15) NOT NULL,
> `work_telephone` varchar(100) NOT NULL,
> `home_telephone` varchar(100) NOT NULL,
> `mobile_telephone` varchar(100) NOT NULL,
> `balance` float NOT NULL DEFAULT '0',
> `credit` float NOT NULL DEFAULT '0',
> `services` varchar(255) NOT NULL,
> `tariff_name` varchar(120) NOT NULL DEFAULT ' ',
> `account_id` int(11) NOT NULL DEFAULT '0',
> `block_start_date` int(11) NOT NULL DEFAULT '0',
> `is_juridical` int(11) NOT NULL DEFAULT '0',
> KEY `users_id` (`users_id`),
> KEY `users_id__is_juridical` (`users_id`,`is_juridical`),
> KEY `is_juridical__block_start_date` (`is_juridical`,`block_start_date`)
> ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
>
> -- --------------------------------------------------------
>
> --
> -- Table structure for table `rayon`
> --
>
> CREATE TABLE IF NOT EXISTS `rayon` (
> `id` int(11) NOT NULL AUTO_INCREMENT,
> `street` varchar(255) NOT NULL,
> `area_id` int(5) NOT NULL,
> `house` varchar(100) NOT NULL,
> PRIMARY KEY (`id`)
> ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=21984 ;
>
> Мне надо выбрать только те записи из дебторс, где район ид равен выбранному, дом в дебторс равен дому в районе.
> area_id = 1 AND house = building
>
> И главное - улицы из базы район, которые похожи/входят в адреса дебторов. Базы не нормализованны, так что адреса отличаются, но в базе района они только строкой, например Ленина, а в адресах дебторов с домом и квартирой, например Ленина 77-22.
>
> Думал составить как-то так:
>
> SELECT debtors.*, FROM_UNIXTIME(block_start_date) AS date
> FROM debtors, rayon
> WHERE area_id = 1 AND house = building
> AND actual_address LIKE '%street%'
> ORDER BY date DESC
>
>
> Но в street не подставляет значение, и в итоге выбирается 0 записей. Если сам подставляю Ленина, то находит записи.
>
> Хотелось бы обойтись без php и циклов.
> Возможно?
>


From: seyfer - 13/12/2011 - 10:51:24
Subject:Возможно ли составить такой запрос?
-----------------
Сделал с двумя селектами. Тогда выбираю сначала район, заполняю улицами второй селект, выбираю улицу и записи выбираются. Но если выбран только район без улицы - пусто. Тогда составил запрос на этот случай, составил строку в цикле и вот такой запрос выходит:


SELECT DISTINCT debtors.*, FROM_UNIXTIME(block_start_date) AS date FROM debtors, rayon, area WHERE area.id = 2 AND house = building AND area_id = area.id AND ( actual_address LIKE '%СТАДИОННАЯ%' OR actual_address LIKE '%БРАТСКАЯ%' OR actual_address LIKE '%СИБИРСКАЯ%' OR actual_address LIKE '%САЯНСКАЯ%' OR actual_address LIKE '%МОЛОДОСТИ%' OR actual_address LIKE '%КОНЕЧНАЯ%' OR actual_address LIKE '%ПРОЕКТНАЯ%' OR actual_address LIKE '%УКРАИНСКАЯ%' OR actual_address LIKE '%КАРАМЗИНА%' OR actual_address LIKE '%ГЛИНЯНАЯ%' OR actual_address LIKE '%КОЛХОЗНАЯ%' OR actual_address LIKE '%ЭЛЕКТРИКОВ%' OR actual_address LIKE '%ЭКСКУРСАНТОВ%' OR actual_address LIKE '%ШИФЕРНИКОВ%' OR actual_address LIKE '%УРАЛЬСКИЙ%' OR actual_address LIKE '%СТРЕЛОЧНАЯ%' OR actual_address LIKE '%СЕМАФОРНАЯ%' OR actual_address LIKE '%СЕЛЬСКАЯ%' OR actual_address LIKE '%СВЕРДЛОВСКАЯ%' OR actual_address LIKE '%ТУРГЕНЕВА%' OR actual_address LIKE '%СКЛАДСКАЯ%' OR actual_address LIKE '%МЕБЕЛЬНАЯ%' OR actual_address LIKE '%ЗАТОНСКАЯ%' OR actual_address LIKE '%КОРОЛЕВА%' OR actual_address LIKE '%КОЛЬЦЕВАЯ%' OR actual_address LIKE '%ЛЕСНИКОВ%' OR actual_address LIKE '%ТИМОШЕНКОВА АЛЕШИ%' OR actual_address LIKE '%РОЩЕВАЯ%' OR actual_address LIKE '%ПРИБОЙНАЯ%' OR actual_address LIKE '%ДЕПУТАТСКАЯ%' OR actual_address LIKE '%ГИПСОВАЯ 3-Я%' OR actual_address LIKE '%ГИПСОВАЯ%' OR actual_address LIKE '%ВЕСЕЛАЯ%' OR actual_address LIKE '%ВАВИЛОВА%' OR actual_address LIKE '%БОЙКАЯ%' OR actual_address LIKE '%БОДРАЯ%' OR actual_address LIKE '%60 ЛЕТ ОКТЯБРЯ%' OR actual_address LIKE '%СУДОСТРОИТЕЛЬНАЯ%' OR actual_address LIKE '%СПЛАВУЧАСТОК%' OR actual_address LIKE '%ЦЕМЕНТНИКОВ%' OR actual_address LIKE '%ТУРИСТСКАЯ%' OR actual_address LIKE '%ОДНОСТОРОННИЙ%' OR actual_address LIKE '%МОСТОВИКОВ%' OR actual_address LIKE '%МАКАРОВА АДМИРАЛА%' OR actual_address LIKE '%КООПЕРАТИВНАЯ%' OR actual_address LIKE '%СОЛОНЦОВАЯ%' OR actual_address LIKE '%ПАРАШЮТНАЯ%' OR actual_address LIKE '%ОРЛОВСКАЯ%' OR actual_address LIKE '%МУСОРГСКОГО%' OR actual_address LIKE '%ЛЕСОПЕРЕВАЛОЧНАЯ%' OR actual_address LIKE '%КОМБАЙНЕРОВ%' OR actual_address LIKE '%КИРПИЧНИКОВ%' OR actual_address LIKE '%КАМЕННАЯ%' OR actual_address LIKE '%ДЕЛЕГАТСКАЯ%' OR actual_address LIKE '%ГРАФИТНАЯ%' OR actual_address LIKE '%ГРАНИТНАЯ%' OR actual_address LIKE '%ГЛАДКОВА АНАТОЛИЯ%' OR actual_address LIKE '%АФОНТОВСКИЙ%' OR actual_address LIKE '%ФАБРИЧНАЯ%' OR actual_address LIKE '%УЗКИЙ%' OR actual_address LIKE '%МОТОРНАЯ%' OR actual_address LIKE '%МПС%' OR actual_address LIKE '%ТОРГАШИНСКАЯ%' OR actual_address LIKE '%РЕЧНИКОВ%' OR actual_address LIKE '%МЕДИЦИНСКИЙ%' OR actual_address LIKE '%ДРУЖБЫ%' OR actual_address LIKE '%КОРАБЕЛЬНАЯ%' OR actual_address LIKE '%ИЗЫСКАТЕЛЬСКИЙ%' OR actual_address LIKE '%ВОДОМЕТНЫЙ%' OR actual_address LIKE '%ВЕРХОЯНСКИЙ%' OR actual_address LIKE '%ВАСНЕЦОВА%' OR actual_address LIKE '%СТРОИТЕЛЬНАЯ%' OR actual_address LIKE '%ПОЛТАВСКАЯ%' OR actual_address LIKE '%ПОДЪЕМНАЯ%' OR actual_address LIKE '%ПОБЕЖИМОВА%' OR actual_address LIKE '%НОВАТОРСКАЯ%' OR actual_address LIKE '%МАТРОСОВА АЛЕКСАНДРА%' OR actual_address LIKE '%ЛЕТЧИКОВ%' OR actual_address LIKE '%ЛЕСОПИЛЬЩИКОВ%' OR actual_address LIKE '%КРИВОКОЛЕННЫЙ%' OR actual_address LIKE '%КРАСНОЯРСКИЙ РАБОЧИЙ ИМ. ГАЗЕТЫ%' OR actual_address LIKE '%КРАСНОПРЕСНЕНСКАЯ%' OR actual_address LIKE '%КОНСТРУКТОРОВ%' OR actual_address LIKE '%КЛЮЧЕВСКАЯ%' OR actual_address LIKE '%КЛИНКЕРНАЯ%' OR actual_address LIKE '%ПОДГОРНАЯ%' OR actual_address LIKE '%ПЛАНОВАЯ%' OR actual_address LIKE '%ЛАЛЕТИНО%' OR actual_address LIKE '%ТОРГОВАЯ%' OR actual_address LIKE '%КАНСКАЯ%' OR actual_address LIKE '%ЮЖНАЯ%' OR actual_address LIKE '%ПРОМЫШЛЕННЫЙ%' OR actual_address LIKE '%ФИГУРНАЯ%' OR actual_address LIKE '%ЛИТЕЙНАЯ%' OR actual_address LIKE '%БОРОВАЯ%' OR actual_address LIKE '%БАЗАРНАЯ%' OR actual_address LIKE '%БАЗАЙСКАЯ%' OR actual_address LIKE '%КАРЬЕРНАЯ%' OR actual_address LIKE '%КАШТАЧНАЯ%' OR actual_address LIKE '%КВАДРАТНЫЙ%' ) AND ( street LIKE '%СТАДИОННАЯ%' OR street LIKE '%БРАТСКАЯ%' OR street LIKE '%СИБИРСКАЯ%' OR street LIKE '%САЯНСКАЯ%' OR street LIKE '%МОЛОДОСТИ%' OR street LIKE '%КОНЕЧНАЯ%' OR street LIKE '%ПРОЕКТНАЯ%' OR street LIKE '%УКРАИНСКАЯ%' OR street LIKE '%КАРАМЗИНА%' OR street LIKE '%ГЛИНЯНАЯ%' OR street LIKE '%КОЛХОЗНАЯ%' OR street LIKE '%ЭЛЕКТРИКОВ%' OR street LIKE '%ЭКСКУРСАНТОВ%' OR street LIKE '%ШИФЕРНИКОВ%' OR street LIKE '%УРАЛЬСКИЙ%' OR street LIKE '%СТРЕЛОЧНАЯ%' OR street LIKE '%СЕМАФОРНАЯ%' OR street LIKE '%СЕЛЬСКАЯ%' OR street LIKE '%СВЕРДЛОВСКАЯ%' OR street LIKE '%ТУРГЕНЕВА%' OR street LIKE '%СКЛАДСКАЯ%' OR street LIKE '%МЕБЕЛЬНАЯ%' OR street LIKE '%ЗАТОНСКАЯ%' OR street LIKE '%КОРОЛЕВА%' OR street LIKE '%КОЛЬЦЕВАЯ%' OR street LIKE '%ЛЕСНИКОВ%' OR street LIKE '%ТИМОШЕНКОВА АЛЕШИ%' OR street LIKE '%РОЩЕВАЯ%' OR street LIKE '%ПРИБОЙНАЯ%' OR street LIKE '%ДЕПУТАТСКАЯ%' OR street LIKE '%ГИПСОВАЯ 3-Я%' OR street LIKE '%ГИПСОВАЯ%' OR street LIKE '%ВЕСЕЛАЯ%' OR street LIKE '%ВАВИЛОВА%' OR street LIKE '%БОЙКАЯ%' OR street LIKE '%БОДРАЯ%' OR street LIKE '%60 ЛЕТ ОКТЯБРЯ%' OR street LIKE '%СУДОСТРОИТЕЛЬНАЯ%' OR street LIKE '%СПЛАВУЧАСТОК%' OR street LIKE '%ЦЕМЕНТНИКОВ%' OR street LIKE '%ТУРИСТСКАЯ%' OR street LIKE '%ОДНОСТОРОННИЙ%' OR street LIKE '%МОСТОВИКОВ%' OR street LIKE '%МАКАРОВА АДМИРАЛА%' OR street LIKE '%КООПЕРАТИВНАЯ%' OR street LIKE '%СОЛОНЦОВАЯ%' OR street LIKE '%ПАРАШЮТНАЯ%' OR street LIKE '%ОРЛОВСКАЯ%' OR street LIKE '%МУСОРГСКОГО%' OR street LIKE '%ЛЕСОПЕРЕВАЛОЧНАЯ%' OR street LIKE '%КОМБАЙНЕРОВ%' OR street LIKE '%КИРПИЧНИКОВ%' OR street LIKE '%КАМЕННАЯ%' OR street LIKE '%ДЕЛЕГАТСКАЯ%' OR street LIKE '%ГРАФИТНАЯ%' OR street LIKE '%ГРАНИТНАЯ%' OR street LIKE '%ГЛАДКОВА АНАТОЛИЯ%' OR street LIKE '%АФОНТОВСКИЙ%' OR street LIKE '%ФАБРИЧНАЯ%' OR street LIKE '%УЗКИЙ%' OR street LIKE '%МОТОРНАЯ%' OR street LIKE '%МПС%' OR street LIKE '%ТОРГАШИНСКАЯ%' OR street LIKE '%РЕЧНИКОВ%' OR street LIKE '%МЕДИЦИНСКИЙ%' OR street LIKE '%ДРУЖБЫ%' OR street LIKE '%КОРАБЕЛЬНАЯ%' OR street LIKE '%ИЗЫСКАТЕЛЬСКИЙ%' OR street LIKE '%ВОДОМЕТНЫЙ%' OR street LIKE '%ВЕРХОЯНСКИЙ%' OR street LIKE '%ВАСНЕЦОВА%' OR street LIKE '%СТРОИТЕЛЬНАЯ%' OR street LIKE '%ПОЛТАВСКАЯ%' OR street LIKE '%ПОДЪЕМНАЯ%' OR street LIKE '%ПОБЕЖИМОВА%' OR street LIKE '%НОВАТОРСКАЯ%' OR street LIKE '%МАТРОСОВА АЛЕКСАНДРА%' OR street LIKE '%ЛЕТЧИКОВ%' OR street LIKE '%ЛЕСОПИЛЬЩИКОВ%' OR street LIKE '%КРИВОКОЛЕННЫЙ%' OR street LIKE '%КРАСНОЯРСКИЙ РАБОЧИЙ ИМ. ГАЗЕТЫ%' OR street LIKE '%КРАСНОПРЕСНЕНСКАЯ%' OR street LIKE '%КОНСТРУКТОРОВ%' OR street LIKE '%КЛЮЧЕВСКАЯ%' OR street LIKE '%КЛИНКЕРНАЯ%' OR street LIKE '%ПОДГОРНАЯ%' OR street LIKE '%ПЛАНОВАЯ%' OR street LIKE '%ЛАЛЕТИНО%' OR street LIKE '%ТОРГОВАЯ%' OR street LIKE '%КАНСКАЯ%' OR street LIKE '%ЮЖНАЯ%' OR street LIKE '%ПРОМЫШЛЕННЫЙ%' OR street LIKE '%ФИГУРНАЯ%' OR street LIKE '%ЛИТЕЙНАЯ%' OR street LIKE '%БОРОВАЯ%' OR street LIKE '%БАЗАРНАЯ%' OR street LIKE '%БАЗАЙСКАЯ%' OR street LIKE '%КАРЬЕРНАЯ%' OR street LIKE '%КАШТАЧНАЯ%' OR street LIKE '%КВАДРАТНЫЙ%' ) ORDER BY date DESC LIMIT 0, 20


Ужасно огромный, но работает. Действительно выбирает записи с улицами по району, только дооолго.
Для самого большого района Showing rows 0 - 19 (20 total, Query took 11.0257 sec).

Неужели нету больше вариантов?


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
40825



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |