Я работаю над веб-приложением с набором данных, которые пользователи могут просматривать и редактировать.
Пользователи хотят настроить одно из полей, отображаемых для каждого элемента, например, «product_name».
Каждый продукт имеет набор значений по умолчанию в таблице, который одинаков для всех пользователей:
Таблица продуктов будет выглядеть следующим образом (пропуская синтаксис, вы поймете идею):
CREATE TABLE products (
pid int, # product id
pname varchar # product name (users want to customize this)
);
Мне нужно отображать настроенное имя продукта пользователя во всех таблицах / списках на моем сайте всякий раз, когда есть настроенное значение для этого продукта, но в противном случае отображается значение по умолчанию.
Для экономии места я подумал об использовании дополнительной таблицы, которая как бы «переопределяет» значения по умолчанию для любого данного пользователя, для любого данного продукта. Строки добавляются в эту таблицу по мере необходимости. У пользователя, который не настраивал имя продукта, не будет строк:
CREATE TABLE custom (
pid int,
userid int,
pname varchar
);
Я могу легко объединить эти две таблицы по идентификатору продукта и выбрать значение по умолчанию (products.pname) или пользовательское значение (custom.pname) для каждой строки в php, но я надеюсь, что есть больше эффективный способ сделать это в MySQL.
Есть ли выражение, которое позволяет мне выбрать один столбец, если не ноль, иначе выбрать другой (через две таблицы)?
Не могли бы вы предложить другой способ справиться с этим?
Спасибо.
PS: может быть, тип JOIN, который позволил бы столбцу таблицы 2 с тем же именем переопределить столбец в таблице 1 для тех строк, где он существует в таблице 2?