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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с запросом 
:(
    Опции темы
Zakir_Kadiri
  Дата 14.3.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Привет всем!
Есть таблица структур такая

id    ref_id    ref_field    value
1    1    title        someval1
2    1    full        someval2

Нужно делат зпросик что вернул такой ответ.
ref_id    title       full
1        someval1   someval2
Я делал вот так но не то что мне нужно.

SELECT ref_id, if(ref_field = 'title', value, NULL) AS title, if(ref_field = 'full', value, NULL ) AS full FROM table

Извените по ошибки тем создовалься дважды

Это сообщение отредактировал(а) Zakir_Kadiri - 14.3.2008, 15:06
PM   Вверх
skyboy
Дата 14.3.2008, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Код

SELECT `table0`.`value` AS `title`, `table1`.`value` AS `full`
FROM `table` AS `table0`
INNER JOIN `table` AS `table1`
ON `table0`.`ref_id` = `table1`.`ref_id`
WHERE `table0`.`ref_field`= "title" AND `table1`.`ref_field` = "full"

PM MAIL   Вверх
Zakir_Kadiri
Дата 14.3.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(skyboy @  14.3.2008,  17:57 Найти цитируемый пост)
SELECT `table0`.`value` AS `title`, `table1`.`value` AS `full`
FROM `table` AS `table0`
INNER JOIN `table` AS `table1`
ON `table0`.`ref_id` = `table1`.`ref_id`
WHERE `table0`.`ref_field`= "title" AND `table1`.`ref_field` = "full"


Спасибо. Ну чесно говоря такого я тоже уже задавал. Но мне не хочется дважды обращатся к одному таблицу
PM   Вверх
skyboy
Дата 14.3.2008, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Zakir_Kadiri @  14.3.2008,  15:22 Найти цитируемый пост)
Но мне не хочется дважды обращатся к одному таблицу

религия, да? 
ну, можешь выбирать один раз, сортируя по ref_id, а соединять на стороне клиента в цикле. естественно, никакие инжексы при этом использоваться не будут.
PM MAIL   Вверх
Zakir_Kadiri
Дата 14.3.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



мда... Похоже я не смогу найти чего я хочу.
...Ф к чему религия?? smile 
PM   Вверх
skyboy
Дата 14.3.2008, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Zakir_Kadiri @  14.3.2008,  16:05 Найти цитируемый пост)
мда... Похоже я не смогу найти чего я хочу.

приведенный мной запрос чем не устраивает? данные обработает именно так, как ты показал.
Цитата(Zakir_Kadiri @  14.3.2008,  16:05 Найти цитируемый пост)
..Ф к чему религия??

к тому. к тому, что "не хочу дважды обращаться к одной таблице, даже если это ускорить процесс обработки и разработки просто потому, что не люблю число два" - это религия. крайняя степень фанатизма.
PM MAIL   Вверх
Zakir_Kadiri
  Дата 14.3.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(skyboy @  14.3.2008,  19:14 Найти цитируемый пост)
Цитата(Zakir_Kadiri @  14.3.2008,  16:05 Найти цитируемый пост)
мда... Похоже я не смогу найти чего я хочу.

приведенный мной запрос чем не устраивает? данные обработает именно так, как ты показал.
Цитата(Zakir_Kadiri @  14.3.2008,  16:05 Найти цитируемый пост)
..Ф к чему религия??

к тому. к тому, что "не хочу дважды обращаться к одной таблице, даже если это ускорить процесс обработки и разработки просто потому, что не люблю число два" - это религия. крайняя степень фанатизма. 


skyboy, ну извини не хотел тебя обидет smile 
Но мой пример - это маленкий кусок базы в настояшим много другого есть и поетому твой подход не очен то хороший.
... А про религии все равно не согласен. потому что с числом "два" у меня проблемы нет smile и как я и сказал этот запрос не ускоряет а медляет!!! smile  smile  smile 
PM   Вверх
skyboy
Дата 15.3.2008, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Zakir_Kadiri @  14.3.2008,  22:25 Найти цитируемый пост)
Но мой пример - это маленкий кусок базы

баха - это данные. со своей структурой.
мы же говорим о запросе. запросе выбора из этой базы.
если у то, что мы обсуждаем, всего лишь часть большого запроса - вопрос один. но тогда почему бы и не привести этот "большой запрос"? если же у тебя обсуждаемый запрос один, то не понимаю, почему 
Цитата(Zakir_Kadiri @  14.3.2008,  22:25 Найти цитируемый пост)
как я и сказал этот запрос не ускоряет а медляет

разве что отсутствуют индексы на необходимые поля...
Цитата(Zakir_Kadiri @  14.3.2008,  22:25 Найти цитируемый пост)
skyboy, ну извини не хотел тебя обидет 

ты меня не обидел. но нежеланием пояснить суть вопроса вызываешь недоумение.
PM MAIL   Вверх
SelenIT
Дата 15.3.2008, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



На правах "вредного совета", зато без JOIN-а:
Код

SELECT GROUP_CONCAT(IF(`ref_field`='title', `value`, '') SEPARATOR '') as `title`,
       GROUP_CONCAT(IF(`ref_field`='full', `value`, '') SEPARATOR '') as `full`
FROM `table`
GROUP BY `ref_id`

Прошу не относиться слишком серьезно;). Вариант skyboyя, имхо, лучше и по смыслу, и по надежности.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Zakir_Kadiri
Дата 15.3.2008, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(SelenIT @  15.3.2008,  04:24 Найти цитируемый пост)
Прошу не относиться слишком серьезно;). Вариант skyboyя, имхо, лучше и по смыслу, и по надежности. 


спасибо тебе smile  Твой подход тоже неплохо. и принципе скорост выпольнения гараздо быстро чем пример skyboyя.

Цитата(skyboy @  15.3.2008,  03:45 Найти цитируемый пост)

разве что отсутствуют индексы на необходимые поля...

мда... Ты тоже хорошо сказал. Может пасоветуеш в этом примере каки индексы нам нужны? Просто я не хочу никаму мазги делат не нужными полями при этом запросе.

Это сообщение отредактировал(а) Zakir_Kadiri - 15.3.2008, 10:33
PM   Вверх
Zakir_Kadiri
Дата 15.3.2008, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



и ещо подсказку скажу  smile 
в запросе ещо используется like для поиска вроде так
Код

where value like '%someword%'


 ип при этом скорост очен много снижаеться

Это сообщение отредактировал(а) Zakir_Kadiri - 15.3.2008, 11:16
PM   Вверх
SelenIT
Дата 15.3.2008, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

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



Цитата(Zakir_Kadiri @  15.3.2008,  11:13 Найти цитируемый пост)
при этом скорост очен много снижаеться

Это естественно - при таком поиске база не может использовать индекс по полю value и вынуждена перебирать все записи. Вот если бы было where value like 'someword%' (поиск по началу строки), тогда индекс бы работал. Если нужно искать по произвольному месту в большом тексте, рекомендую рассмотреть полнотекстовый поиск (fulltext search).


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Zakir_Kadiri
  Дата 15.3.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(SelenIT @  15.3.2008,  17:05 Найти цитируемый пост)
Если нужно искать по произвольному месту в большом тексте, рекомендую рассмотреть полнотекстовый поиск (fulltext search). 


Да ну как сделат запрос если мне нужно найти "ван" и "ванна" с использованием MATCH again?

Это сообщение отредактировал(а) Zakir_Kadiri - 15.3.2008, 16:23
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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