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




MySQL.RU - Webboard



Вернуться
MySql сложный запрос с JOIN с сортировкой (amixen) 09/10/2005 - 13:56:22
      Re: MySql сложный запрос с JOIN с сортировкой (Dinky) 11/10/2005 - 19:43:30

> Original message text:
> From: amixen - 09/10/2005 - 13:56:22
> Subject:MySql сложный запрос с JOIN с сортировкой
> -----------------
> Приветствую люди!
> Разрабатывая свой проект столкнулся с траблой и пока не нашел решения...
>
> Есть:
> таблица subdomains (домены),
> таблица languages (языки и сообщения),
> таблица settings (тут хранятся свойства).
>
> CREATE TABLE `light_subdomains` (
> `id` int(11) NOT NULL auto_increment,
> `subdomain` varchar(25) NOT NULL default '',
> `posted` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
> PRIMARY KEY (`id`)
> ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
>
> CREATE TABLE `light_settings` (
> `id` int(11) NOT NULL auto_increment,
> `field_id` int(11) NOT NULL default '0',
> `phones` varchar(20) NOT NULL default '',
> `fax` varchar(20) NOT NULL default '',
> `email` varchar(50) NOT NULL default '',
> PRIMARY KEY (`id`)
> ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
>
>
>
> Обязательно надо обращаться к таблице languages во всех запросах, так-как там лежат слова и предложения и много чего другого... Поэтому я делаю сложный запрос с использованием JOIN.
>
> Задача:
> взять из базы данные по доменам (таблица subdomains), потом в таком же порядке (по ID-шникам) взять данные из таблица settings.
>
> Я сначала вытаскиваю данные из таблицы subdomains:
>
> [sql]SELECT * FROM light_subdomains AS t ORDER BY t.subdomain[/sql]
>
> id subdomain
> 3 `bbb`
> 4 `ddd`
> 2 `zzz`
>
>
> Потом из таблицы settings (мне нужно было возвращать строки с данными в том же порядке, с сортировкой по field_id):
>
> [sql]
> SELECT t.*, light_languages.*
> FROM light_settings AS t
> LEFT JOIN light_languages ON light_languages.field_id=t.id
> WHERE t.id IS NOT NULL AND t.field_id IN (3,4,2)
> [/sql]
>
> Но ессесно второй запрос возвращает данные не в том порядке в котором должен!
>
> Можно не трогая первый запрос во втором какимто образом указать принудительную сортировку (где field_id=3, потом=4, потом=2) ???
>


From: Dinky - 11/10/2005 - 19:43:30
Subject:MySql сложный запрос с JOIN с сортировкой
-----------------
1) можно разбить на 3 запроса и объединить из в UNION
2) можно перечислить поля в select-e и добавить поле для сортировки:
SELECT ...., CASE WHEN (field_id=3) THEN 1 WHEN (field_id=4) THEN 2 WHEN (field_id=2) THEN 3 END AS sort_by
...
ORDER BY sort_by;

--
Dmitry



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

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

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



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