Новости
Документация
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 - 09:08:11
Subject:Возможно ли составить такой запрос?
-----------------
SELECT DISTINCT debtors.*, FROM_UNIXTIME(block_start_date) AS date
FROM debtors, rayon, area
WHERE area.id = 2 AND house = building
AND actual_address LIKE '%мира%' AND area_id = area.id
ORDER BY date DESC


Так выдает все Мира с домами 3 из Дебторс и второй район.

Район выбирается в приложении по селекту. Есть вариант сделать два селекта Район - Улица и второй заполнять динамически, но хотелось бы по одному району выбирать.

В случае если делать с двумя селектами запрос будет такой, т.к. не вижу другого способа связать улицы

SELECT DISTINCT * , FROM_UNIXTIME( block_start_date ) AS DATE
FROM debtors, rayon, area
WHERE area.id =2
AND house = building
AND actual_address LIKE '%мира%'
AND area_id = area.id
AND street LIKE '%мира%'
ORDER BY DATE DESC
LIMIT 0 , 30


НО!

Улица Мира есть в районе 2 с адресами Мира 3-116 и Мира 3-81, они соответствуют улице МИРА в базе rayon попадают в выборку.
Выбираю район 3, в базе rayon улица АДМИРАЛА МАКАРОВА и дом номер 3, попадают в выборку эти же 2 адреса (Мира 3-116 и Мира 3-81).


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

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

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



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