В этой статье хотелось бы рассказать, как менять формат отображения столбца какой-либо таблицы в программе DB Browser for SQLite , и расскажу, для чего я это использую.
В программе DB Browser for SQLite
мне часто приходится редактировать вручную какие-то значение таблицы. Но проблема в том, что некоторые поля таблицы - это ссылки на поле ID другой таблицы. В таком случае тяжело понять на какую строку таблицы идет ссылка. Было бы удобное вместо ID видеть значение какого то столбца той таблицы на которую идет ссылка по ID.
Объясню на примере
Есть База Данных в котором есть таблица Mark, в которой есть столбец (или поле ) mCategory, которое ссылается ссылается на столбец ID из таблицы Category. Но проблема в том, что не совсем понятно на какую cтроку он ссылается:
Для того чтобы увидеть на какую строку из таблицы Category ссылается столбец Mark.mCategory нужно постоянно открывать таблицу Category и искать cтроку по ID, что крайне не удобно и занимает много времени.
Хотелось бы, чтобы в таблице Mark в столбце mCategory показывались значения столбца cName из таблицы Category (а не ID ). Чтобы получилось как показано на следующем скриншоте:
Поиск решения данной проблемы в интернете не дал ничего дельного, поэтому решился поделиться этим howto, чтобы можно было удобно и наглядно редактировать таблицы в программе DB Browser for SQLite. Надеюсь данная статья вам пригодится.
Как это сделать
1) в вкладке "Данные" выбрать таблицу Mark,
2 ) нажать правой кнопки мыши на столбец mCategory и выбрать пункт Формат отображения
Появится окно, где можно указать формат для отображения
В выпадающем меню, вместо варианта "По умолчанию" можно выбрать различные форматы столбцов. Вот некоторые из этих форматов:
Выберем вариант "Мой формат" и введём следующий запрос:
printf('%s', (SELECT cName FROM Category WHERE Category.ID ="mCategory"))
Как это выглядит в окне:
Как видим этот SQLite-запрос использует функцию printf()
, которая форматирует строку, чтобы вернуть отформатированный результат. Давайте разберемся, что он делает:
SELECT cName FROM Category WHERE Category.ID =“mCategory”:
Эта часть запроса выбирает значение столбца cName из таблицы Category, где значение столбца ID равно "mCategory",
которое будет подставлено на значение каждой строки из столбца mCategory.
printf(‘%s’, …):
Функция printf()
принимает форматированную строку и аргументы для вставки в эту строку.
В данном случае, она использует формат %s
, который означает, что она ожидает строковый аргумент.
Вместо многоточия (...
) вставляется результат первой части запроса.
Итак, в итоге этот запрос выберет значение столбца cName из таблицы Category, где ID равно "mCategory"
, и отформатирует его как строку с помощью printf()
.
В результате мы получим желаемый результат, который позволит легко вручную редактировать нужные поля таблицы Mark, обладая столь необходимой информацией из столбца mCategory:
Надо отметить, что в нашем примере, не нужно менять значение из столбца mCategory , так как если мы это сделаем, то вместо ID будет записано наше отформатированное значение, а это будет ошибкой. Другие же столбцы (или поля) мы можем свободно редактировать, видя к чему они относятся, благодаря отформатированному полю mCategory.
Надеюсь вам пригодится это решение из этой статьи, если вам часто приходится редактировать вручную данные из таблицы SQLite.