Слияние двух результатов в запросе MySQL, если записи связаны значением поля

0

У нас есть таблица продуктов. Пользователи могут создавать новые продукты как копии существующих продуктов.

Вместо простого дублирования этих данных мы думаем, чтобы свести к минимуму размер базы данных, мы сохраним только отличия от "родительского" продукта. (говорили тысячи продуктов)

Я думаю, что для каждого нового "дочернего" продукта мы создаем новую запись в той же таблице, которая имеет "родительское" поле, которое имеет идентификатор родительского продукта.

Итак, при запросе для "дочернего" продукта существует ли способ объединить результаты, чтобы любые пустые поля в дочерней записи были взяты из родительского?

(Надеюсь, это имеет смысл)

Теги:

2 ответа

0

Я бы предположил, что вы хотите иметь дочерние продукты дочерних продуктов (например, продукт C основан на продукте B, который, в свою очередь, основан на продукте A.) И были бы дети из тех и так далее (особенно с созданным пользователем контентом.) Это может быстро выйти из-под контроля и потребовать, чтобы вы выполняли либо длинные громоздкие запросы, либо собирали данные с кодом, а не SQL-запросами.

Я просто предлагаю это как соображение, потому что размер сбережений часто приводит к стоимости времени обработки. Просто убедитесь, что вы рассматриваете это, прежде чем прыгать во что-то, что не может быть легко отменено.

0

Да, вы можете это сделать.

Скажем, например, имя вашей таблицы - это Продукт, и вы хотите получить имя дочернего продукта, тогда вы можете запросить как,

select IF(c.productName = '',p.productName,c.productName) as childProductName
from Products p,Products c
where c.ID = p.ParentID 

Аналогичным образом вы можете сделать это для других полей.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню