gpt4 book ai didi

特色/强调产品的Mysql表方案

转载 作者:行者123 更新时间:2023-11-29 13:49:20 28 4
gpt4 key购买 nike

嗯,我的问题是,我想存储某种产品在他们自己的表中,并且从这些产品中我想选择一些到特色/强调产品表,它将存储每个表中所选行的 ID,以在网站的主页上显示这些特色产品。

从表中选择特色产品后,我想自己制定订单如何列出它们,所以我认为需要一个新表来存储特色产品的 ID 和顺序,但我可以无法想象如何正确连接这些表。

我想了很多如何解决这个问题,但我希望有人知道正确的答案!

最佳答案

创建第二个表:

CREATE TABLE FEATURED_PRODUCTS (
ID INTEGER NOT NULL,
PRODUCT_ID INTEGER NOT NULL,
PRODUCT_ORDER INTEGER NOT NULL
)

然后,当您想要查找特色产品时,只需加入您的原始表格即可:

SELECT P.*
FROM PRODUCTS P
INNER JOIN FEATURED_PRODUCTS FP ON P.ID = FP.PRODUCT_ID
ORDER BY FP.PRODUCT_ORDER

值得一提的是,FEATURED_PRODUCTS 表中的 ID 并不是绝对必要的,我只是不喜欢没有主键列的表。

---- 编辑 ----

更完整的示例:

CREATE TABLE FRUIT_PRODUCTS (
ID INTEGER NOT NULL,
NAME VARCHAR(255),
PRICE INTEGER NOT NULL,
FARM_OF_ORIGIN VARCHAR(255)
)

CREATE TABLE BREAD_PRODUCTS (
ID INTEGER NOT NULL,
NAME VARCHAR(255),
PRICE INTEGER NOT NULL,
TYPE_OF_GRAIN VARCHAR(255)
)

CREATE TABLE MEAT_PRODUCTS (
ID INTEGER NOT NULL,
NAME VARCHAR(255),
PRICE INTEGER NOT NULL,
ANIMAL VARCHAR(255)
)

CREATE TABLE FEATURED_PRODUCTS (
ID INTEGER NOT NULL,
TABLE_NAME VARCHAR(255),
PRODUCT_ID INTEGER NOT NULL,
PRODUCT_ORDER INTEGER NOT NULL
)

然后你就可以这样加入他们:

SELECT FP.TABLE_NAME, P.ID, P.NAME, P.PRICE, P.FARM_OF_ORIGIN, 
NULL AS TYPE_OF_GRAIN, NULL AS ANIMAL
FROM FEATURED_PRODUCTS FP
INNER JOIN FRUIT_PRODUCTS P ON FP.TABLE_NAME = 'FRUIT_PRODUCTS'
AND FP.PRODUCT_ID = P.ID
UNION
SELECT FP.TABLE_NAME, P.ID, P.NAME, P.PRICE, NULL AS FARM_OF_ORIGIN,
P.TYPE_OF_GRAIN, NULL AS ANIMAL
FROM FEATURED_PRODUCTS FP
INNER JOIN BREAD_PRODUCTS P ON FP.TABLE_NAME = 'BREAD_PRODUCTS'
AND FP.PRODUCT_ID = P.ID
UNION
SELECT FP.TABLE_NAME, P.ID, P.NAME, P.PRICE, NULL AS FARM_OF_ORIGIN,
NULL AS TYPE_OF_GRAIN, P.ANIMAL
FROM FEATURED_PRODUCTS FP
INNER JOIN MEAT_PRODUCTS P ON FP.TABLE_NAME = 'MEAT_PRODUCTS'
AND FP.PRODUCT_ID = P.ID

这将为您提供包含所有特色产品的结果集。 请注意,这尚未经过测试,但应该可以传达想法

关于特色/强调产品的Mysql表方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16904452/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com