Помогите с mysql запросом для почти стандартного вывода

Extalionez

Клоун
Заблокирован
Регистрация
21 Авг 2008
Сообщения
368
Реакции
191
  • Автор темы
  • Заблокирован
  • #1
Сорь, но я не знаю как лучше тему назвать.
В общем данные из вложения выводятся в виде таблице, у которой должна быть возможность сортировки(ORDER) и фильтр по полям. Поля в таблице те, что находятся в базе signs. В таблице вообще выводится список ticket'ов. И у каждого тикета значение поля записано в базе descr.
Проблема в том, что у меня не получается задать несколько условий для where - фильров то может быть выбрано несколько. Да и в фильтре по тому же id может быть задано несколько значений - 1, 2, 15 и нужно вывести все ticket с id 1, 2 и 15. плюс ещё сортировка может быть например по полю телефон, например. Вот такие дела :facepalm:
 

Вложения

  • Безымянный.png
    Безымянный.png
    63,4 KB · Просмотры: 20
  • как должно выглядеть в итоге.png
    как должно выглядеть в итоге.png
    17,4 KB · Просмотры: 19
Проблема в том, что у меня не получается задать несколько условий для where - фильров то может быть выбрано несколько. Да и в фильтре по тому же id может быть задано несколько значений - 1, 2, 15 и нужно вывести все ticket с id 1, 2 и 15. плюс ещё сортировка может быть например по полю телефон, например. Вот такие дела :facepalm:

WHERE ticket.id IN (1,2,15)
ORDER BY `phone`(???)

phone, видимо, хранится в одной колонке с другими данными и разделяется одним из флагов (`type`?)

Судя по структуре - реализация похожа на Для просмотра ссылки Войди или Зарегистрируйся. Единственный универсальный способ - делать программно кучу JOIN-ов по каждому типу sign-а, который задействован в выборке (или в фильтре). Для оптимизации - можно во временную таблицу (или во view-шку) всё складывать (т.е. разворачивать в phone, addr и тд...). Без изменения структуры лучше вариантов нет.
 
А если с изменением?
Так и не увидел, где phone хранится.
Формально, поля, задействованные для сортировки должны содержать только нужную однородную информацию.
Т.е. в колонке phone должны быть только телефоны, и она должна быть отдельной колонкой в таблице.
Вообще, есть презенташка Для просмотра ссылки Войди или Зарегистрируйся - EAV там упоминается.
 
  • Автор темы
  • Заблокирован
  • #5
Так и не увидел, где phone хранится.
phone хранится в таблице signs. Точнее там хранится названия и типы полей. phone, user_name(ФИО) и т.п. Типы это либо строка, либо число для поиска по вводу слова, либо промежуточного значения - цены между мин и макс.
То есть в sign хранится список полей - они могут меняться.
В descr хранится значение этого поля для каждого ticket
 
phone хранится в таблице signs. Точнее там хранится названия и типы полей. phone, user_name(ФИО) и т.п.
Нет.. где хранится само значение phone.. видимо, в val_text по одному (или нескольким) условиям.
Вот такое хранение и есть entity-attribute-value (сущность - атрибут - значение). Расплата за универсальность - сложность (не только в реализации, но и в требуемых ресурсах) поиска и фильтрации...
 
Назад
Сверху