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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MYSQL 1 ко многим запрос 
:(
    Опции темы
Sanchezzz
  Дата 12.12.2011, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

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



есть пару таблиц 

таблица O Объекты ( (int)id , (int)type_id  , (int)status  ) 
таблица P  property_value  (  (int)id_obj ,  (int)id_property , (string)value , (int)id_type_obj , (int)is_mylte )

Все значения хранятся в таблице  P

Пытаюсь выбрать запрос по критериям поиска в таблице P Но не получается сделать сортировку значения 

select o.* , p1.value as price , p2.value as name from O as o 
INNER JOIN P as p1 ON ( p1.id_obj = o.id  and p1.id_property = 104 )
INNER JOIN P as p2 ON ( p2.id_obj = o.id  and p2.id_property = 106 )
... итд

WHERE o.id_type = 49 AND o.status = 0 and   CASE(  p1.value   AS  (Забыл это слово перевод число) ) >= 25000 AND p2.name = '2х комнатная хата тест';


GROUP BY o.id 
ORDER BY price ASC LIMIT 0 , 30

Как правильно сделать выборку когда интре жойнов обращения к одной и той же таблиц много с критериями поиска..
Я бы рад все удалить но систему не я проектировал )

Буду рад любому ответу, спасибо 

Это сообщение отредактировал(а) Sanchezzz - 12.12.2011, 16:18


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Akina
Дата 12.12.2011, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Ничего не понял... в чём сложность-то? ORDER BY price ASC сортирует по полю price (т.е по p1.value) по возрастанию... если нужно не это, то что?


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

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

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



в этом то и прикол что не сортирует  игнорирует 


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Akina
Дата 13.12.2011, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



"Не верю!" ©


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

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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1670
Регистрация: 19.11.2006
Где: Voronezh

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



Акино спасибо я перепроверил сортировка проходит оказывается просто сортирует он не число а строку в результате квартиры стоимостью 100к+ при запросе от цены от 10 000 находились в топе  то есть сортировка проходила по строке а не по числу. 

Утром пришло решение .

Для тех столкнется с таким глупым вопросом СAST(price as SIGNED) Спасает )
Код

SELECT o.id , o.sort , v1.value as realty_raen , v2.value as price FROM OBJ_LIST o 
INNER JOIN ( SELECT * FROM FORM_PROPERTY_VALUE WHERE property_id=104 AND value = 'Юго-Восток' group by obj_list_id ORDER BY value ASC ) v1 ON( v1.obj_list_id = o.id ) 
INNER JOIN ( SELECT * FROM FORM_PROPERTY_VALUE WHERE property_id=106 AND CAST(value as SIGNED) >= 33000 AND CAST(value as SIGNED) <= 36000 group by obj_list_id ORDER BY value ASC ) v2 ON( v2.obj_list_id = o.id ) 
WHERE o.type_id=49 AND o.status=1 GROUP BY o.id ORDER BY `o`.`sort` ASC , CAST(price as SIGNED) ASC LIMIT 0, 30


Это сообщение отредактировал(а) Sanchezzz - 13.12.2011, 10:01


--------------------
Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS.
PM MAIL Skype GTalk   Вверх
Akina
Дата 13.12.2011, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Sanchezzz @  13.12.2011,  10:28 Найти цитируемый пост)
оказывается просто сортирует он не число а строку 

Ну так у Вас поле value имеет тип "строка" - чего удивляться-то?


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

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


Новичок



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

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



Цитата(Sanchezzz @ 13.12.2011,  09:28)
Акино спасибо я перепроверил сортировка проходит оказывается просто сортирует он не число а строку в результате квартиры стоимостью 100к+ при запросе от цены от 10 000 находились в топе  то есть сортировка проходила по строке а не по числу. 

Утром пришло решение .

Для тех столкнется с таким глупым вопросом СAST(price as SIGNED) Спасает )
Код

SELECT o.id , o.sort , v1.value as realty_raen , v2.value as price FROM OBJ_LIST o 
INNER JOIN ( SELECT * FROM FORM_PROPERTY_VALUE WHERE property_id=104 AND value = 'Юго-Восток' group by obj_list_id ORDER BY value ASC ) v1 ON( v1.obj_list_id = o.id ) 
INNER JOIN ( SELECT * FROM FORM_PROPERTY_VALUE WHERE property_id=106 AND CAST(value as SIGNED) >= 33000 AND CAST(value as SIGNED) <= 36000 group by obj_list_id ORDER BY value ASC ) v2 ON( v2.obj_list_id = o.id ) 
WHERE o.type_id=49 AND o.status=1 GROUP BY o.id ORDER BY `o`.`sort` ASC , CAST(price as SIGNED) ASC LIMIT 0, 30

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


 




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


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

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