我有一個數據庫,其中包含通過djangocms佔位符字段添加的產品文本內容的多餘數據庫表。我期待將這些內容移回到單個表格中。MySQL刪除鏈接表並將3個表合併爲一個
我的三個表是:
products_product:
+------------+------------+
| product_id | content_id |
+------------+------------+
| 374 | 1919 |
+------------+------------+
cms_cmsplugin:
+----------------+------+
| placeholder_id | id |
+----------------+------+
| 1919 | 2042 |
+----------------+------+
和cmsplugin_text:
+------------------+------------------+
| cmsplugin_ptr_id | body |
+------------------+------------------+
| 2042 | <p>some_html</p> |
+------------------+------------------+
我期待刪除鏈接表直接將cmsplugin_text正文添加到products_product表中,其字段名稱爲text_content。到目前爲止,我一直在尋找this問題,並想出了以下內容:
INSERT INTO
products_product(content_id, text_content)
SELECT
p.content_id,
cpt.body as text_content
FROM products_product p
JOIN cms_cmsplugin cms ON p.content_id = cms.placeholder_id
LEFT JOIN cmsplugin_text cpt ON cms.id = cpt.cmsplugin_ptr_id
不幸的是沒有工作,只是做了我products_product表的混亂。
你爲什麼要這麼做? AFAIK,你會這樣做_de_ - 規範化你的數據庫。 –
額外的字段最初被添加爲一個Django的cms佔位符字段,一直困擾着我們的網站管理員。他們希望能夠在一個地方編輯整個產品,所以我覺得將這些信息轉移回產品本身是一個好主意。 –
如果因爲其他原因需要鏈接表,那麼我認爲沒有理由刪除'cmsplugin_text'表。如果你不需要鏈接表,那麼你應該完全刪除它。 –