У меня есть 3 таблицы в Mysql 5.
Table Client: ID, Username, Password.
Table Client_Data: ID, Dataname
Table Client_Client_Data: client_id, Data_id, Value
Идея состоит в том, что я могу заставить пользователя этого программного обеспечения определять, какую информацию он хочет получить от своих клиентов.Таблица Client_Data обычно заполняется «Имя», «Фамилия», «Адрес» и так далее.Третий стол соединит столы вместе.Пример:
Client: ID=1 Username=Bert01 Password=92382938v2nvn239
Client_Data: ID=1 Dataname=First Name
Client_Client_Data: client_id=1 data_id=1 value=Bert
Это будет означать, что Bert01 имеет имя "Bert" при объединении таблиц в запросе выбора.
Я отображаю все это в таблице, гдестолбцы - это значения DataName (если вы меня здесь потеряли: заголовки будут выглядеть как «Имя», «Фамилия» и т. д.).Я хочу иметь возможность сортировать эти данные по алфавиту для каждого столбца.
Мое решение состояло в том, чтобы использовать 2 запроса.Первый будет собирать данные с помощью WHERE Client_Data.Dataname = $sortBy ORDER BY Client_Client_Data.value
, а второй запрос будет затем собирать другие данные с WHERE Client.ID = 1 OR 2 OR 3
, содержащие все идентификаторы, собранные в первом запросе.Это прекрасно работает.
Проблема, которая долго играла у меня в голове, заключается в том, что я хочу искать свои данные.Это не было бы слишком сложно, если бы не сортировка.После того, как поиск будет выполнен, таблица будет содержать результаты, но эта таблица должна быть отсортирована так же, как и раньше.
Есть ли у кого-нибудь какие-либо идеи о том, как сделать это, не беспокоясь о памяти веб-сервера, просматривая циклыпотенциально тысячи клиентов?(имеется в виду: я хочу сделать это в Mysql).
Если ваше решение потребует изменения таблиц без потери возможности хранения данных такого типа: это не будет проблемой.