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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по полям с неизвестным количеством полей 
:(
    Опции темы
_zorn_
Дата 15.4.2014, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



У меня возник небольшой ступор.
Например есть 2 таблицы
1. p - id,some_data
2. d - p_id,field_id,field_data
На каждую запись в таблице p может быть несколько записей из таблицы d с разными field_id

Как осуществить поиск типа "И" по нескольким полям ? Предложения по переделки структуры и т.п. принимаются.

Вот примерно как выглядел бы запрос для типа "ИЛИ"
Код

SELECT * FROM p,d WHERE p.id=d.p_id AND p.some_data LIKE 'some%' AND ((d.field_id=3 AND d.field_data LIKE 'field3data%') OR (d.field_id=6 AND d.field_data LIKE 'field6data%'))

Простой заменой OR на AND ничего не добьемся, т.к. field_id не может одновременно равняться И 3 И 6.
Или я туплю и надо отдохнуть ?
PM MAIL   Вверх
Akina
Дата 15.4.2014, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Код

Where (
   (f.type = type1 and t.val = val1)
or (f.type = type2 and t.val = val2)
...
or (f.type = typeN and t.val = valN)
      )
and count(distinct f.type = N)




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

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


Эксперт
***


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

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



#1111 - Invalid use of group function

Забыл упомянуть - мускуль.
PM MAIL   Вверх
Akina
Дата 16.4.2014, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Это был шаблон алгоритма. Идея. Уж не поленись понять идею и довести до рабочего запроса.


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

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


Эксперт
***


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

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



Так я понял идею. Как не крутил, получаю "Invalid use of group function"
====
Осенило smile
Код
GROUP BY p.id HAVING COUNT(*)=2


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


 




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


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

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