Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка по названию компании 
:(
    Опции темы
Leoo
Дата 22.7.2008, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: нет
Всего: 3




У меня такая проблема. Необходимо отсортировать выборку по названию компании.
Но название занесены в таблицу следующим образом
ООО "Компания"
ЗАО «Тоже "Компания"»
ОАО 'Организация'
сортировку необходимо проводить по Компания, Тоже "Компания", Организация
я подумал, что можно использовать в ORDER BY функцию REGEXP и с помощью ее отрезать все до первой кавычки, но как это реализовать не знаю

Заранее благодарен!!



--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
skyboy
Дата 22.7.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(Leoo @  22.7.2008,  09:25 Найти цитируемый пост)
я подумал, что можно использовать в ORDER BY функцию REGEXP и с помощью ее отрезать все до первой кавычки

ой-ли? лучше уж тогда если тыможешь определить формализованные("понимаемые" компьютером) правила предобработки для выбрасывания ненужной информации, то рационально будет хранить кроме "полного" названия ещё и "с выброшенным незначащим мусором" и сортировать по нему. а так как ты собираешься - смерть серверу.
правда, в общем случае, ты набор правил для "выбрасывания" не определишь, потому контроль за работой такой автоматизации, как мне кажется, будет необходим.
PM MAIL   Вверх
bars80080
Дата 22.7.2008, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



а оператор like ?

Код

select * from table where `name` like "%Компания%"

с кавычками только надо похимичить
PM MAIL WWW   Вверх
skyboy
Дата 22.7.2008, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



как можно сортировать полный список по результату выполнения like(так же, как и regexp, кстати), если они возврщают булевское значение?  smile 
PM MAIL   Вверх
Leoo
Дата 22.7.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: нет
Всего: 3



Значит такое не получиться сделать. (


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Feldmarschall
Дата 22.7.2008, 13:10 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



значит, надо ввести допольнительное поле, куда писать нормализованное название.
или вообще разделить название на два поля - форма собственности и собственно название. без кавычек
но, возможно, будут трудности с формализацией.
впрочем, если не пытаться все сделать сразу, а дорабатывать в процессе, то можно сделать нормально
PM   Вверх
Leoo
Дата 22.7.2008, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: нет
Всего: 3



Поле уже поздно вводить. БД сформирована до меня.


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Feldmarschall
Дата 22.7.2008, 15:05 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 3
Всего: 32



Батюшки. Такое ощущение, что БД вырублена из гранита и залита бетоном.

Две вещи, о которых вообще ничего даже не подозревают люди, пришедшие к программированию от нечего делать: это отладка и рефакторинг. 
Вещи, настолько же естественные для программиста, насколько не укладывающиеся в голове у юзера.
Об отладке много уже писалось, и некоторые даже слышали это слово. А рефакторинг - совсем темный лес. 
Скажи такому, что ни одна программа не является застывшим изваянием, а постоянно подвергается доработке и изменениям - не поверят. "Как же так" - удивятся - "ведь все сформировано до меня!"
PM   Вверх
Akina
Дата 22.7.2008, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Код

Order By SubString(`name` FROM 2+Instr(`name`, ' '))
?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
skyboy
Дата 22.7.2008, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Akina, все же твоя конструкция не отсортирует 
Цитата

Компания 
"Компания"
ЗАО "Компания"

как просил автор в первом посте:
Цитата(Leoo @  22.7.2008,  09:25 Найти цитируемый пост)
сортировку необходимо проводить по Компания, Тоже "Компания", Организация

:(
все же только автоматикой такое не сделать.
разве что выдирать определенные буквосочетания("ЗАО", "ООО"), но их список должен пополняться("ЧП", "ПП" и т.д.) и контроль должен быть - вдруг это часть иностраноязычного названия?
PM MAIL   Вверх
Leoo
Дата 22.7.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: нет
Всего: 3



Цитата

Батюшки. Такое ощущение, что БД вырублена из гранита и залита бетоном.


В том то и дело, что нельзя ее изменить т.к. это одно название и разбивать при заведении компании на два поля нельзя. Создать в таблице поле с юр. формой не проблема, но занести ее туда не получиться. Либо надо при занесении РНРшным скриптом резать наименование, но тогда встает проблема, что делать с теми которые уже есть?


--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
skyboy
Дата 22.7.2008, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(Leoo @  22.7.2008,  14:49 Найти цитируемый пост)
 и разбивать при заведении компании на два поля нельзя

почему, кстати?
PM MAIL   Вверх
bars80080
Дата 22.7.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



зачем разбивать?

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

это наиболее простой и эффективный способ
PM MAIL WWW   Вверх
Akina
Дата 22.7.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(skyboy @  22.7.2008,  16:20 Найти цитируемый пост)
как просил автор в первом посте

Вот именно я ориентируюсь на пример в первом посте. И приведенные там 3 записи будут отсортированы именно так, как указано автором. Смотри внимательнее.
Другое дело, если у него там ПОЛНЫЙ бардак, и форма организации где указана, а где и нет, то кавычки есть, то нет... но в примере как раз по этой части все строго, сперва форма организации, потом название в кавычках, пусть и разных.

Leoo, идея нормализовать таблицу, поделив поле на два - вид и наименование, - наиболее разумна. Если ПОКА не хочется переписывать все, что привязано на старую структуру - создать вьюв и использовать его вместо исходной таблицы (тогда, возможно, еще потребуется третье поле - тип кавычки).



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Leoo
Дата 23.7.2008, 10:11 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: нет
Всего: 3



Спасибо всем я справился сам

кому интересно выкладываю код 
Код

SELECT *,
                        IF(
                            LOCATE(""", p.OrgName)>0, 
                            RIGHT(p.OrgName, (CHAR_LENGTH(p.OrgName) - LOCATE(""", p.OrgName) - 5)),
                            IF(
                                LOCATE("«", p.OrgName)>0, 
                                RIGHT(p.OrgName, (CHAR_LENGTH(p.OrgName) - LOCATE("«", p.OrgName) - 6)),
                                p.OrgName
                            )
                        ) as str1
                    FROM Provider p 
                    LEFT JOIN Users u USING(IDUsers)
                    WHERE u.Frozen="1" AND u.codeActiv="" ORDER BY str1



--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0605 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.