gpt4 book ai didi

php - mysql验证来自多个表数据的数据

转载 作者:行者123 更新时间:2023-11-29 13:58:40 25 4
gpt4 key购买 nike

已编辑

我意识到我没有包含品牌代码 ID,现在主表保存品牌 ID,其中只有 1001 和 1002 是我关心的其他品牌是第三方品牌。

结束编辑部分

首先感谢所有社区在此提供的帮助,这些帮助一直非常有用。我对mysql完全是菜鸟,我开发java、javascript,目前是php,在我当前的项目中,我面临一个问题,我需要从数据库中检索数据,考虑到我无法以任何方式修改数据库,问题是如下:

假设有一个销售不同品牌(包括两个自有品牌)的购物网站,例如将它们命名为“puma”、“nike”、“ownbrand1”和“ownbrand2”,则仓库仅保留“ownbrand1”和“ownbrand2”的库存,如果客户购买任何其他品牌,第三方公司将根据需要发送所需的产品。该网站提供多种过滤结果的选择,其中之一是仅显示我们当前有库存的商品。

假设我们有 3 个表,第一个表,我们称之为“库存”,其中包含每个产品(仅限自有品牌)的内部唯一代码的库存量,第二个“主表”包含每个产品的信息,以及唯一代码id和通用产品id,第三个表“photo”保存图片,用于在网站上显示,保存图片信息和通用产品id。

产品由每个产品不同的唯一产品代码id来标识,这意味着相同的产品但不同尺寸或颜色将具有不同的代码id,第二个id通用产品id仅对于每个产品都是不同的,这意味着不同的产品尺寸或颜色将具有相同的产品 ID 和图片信息,即一般产品之一的图片。

------------------------------ 
Stock
------------------------------
ID Name Stock
00001 puma1 0
00002 puma2 0
00003 ownbrand1(s) 0
00004 ownbrand2(l) 0
00005 nike 0
00006 ownbrand1(l) 1
00007 ownbrand1(m) 3

---------------------------------------------
Master
---------------------------------------------
ID Name GeneralId BrandId
00001 puma1 pum001 1030
00002 puma2 pum001 1030
00003 ownbrand1(s) owbr001 1001
00004 ownbrand2(l) owbr002 1002
00005 nike nike001 1040
00006 ownbrand1(l) owbr001 1001
00007 ownbrand1(m) owbr001 1001

------------------------------
Photo

------------------------------
GeneralId  Picture
pum001     pum001.jpg
owbr001   owbr001.jpg
owbr002    owbr002.jpg
nike001   nike001.jpg

如果点击仅库存商品选项,页面将显示来自第三方的商品,在这种情况下,只有自有品牌的库存大于 0 的商品才会显示

期望的结果

“美洲狮”=显示
“耐克”=显示
"ownbrand1"= 显示(因为它有某些尺码的库存)
"ownbrand2"= 未显示(因为没有库存)

现在我完成了首先执行此查询的任务:

$sql_query = "SELECT stock.*, master.*  FROM stock, master WHERE master.ID = stock.ID AND stock.stock > '0'"

然后从主表中获取库存商品的 GeneralID 代码,生成一个数组,然后生成以下查询:

$sql_query = "SELECT * FROM master WHERE generalID NOT IN $previous_array"

并连接两个数组以生成产品品牌的完整列表,以显示在进行更多分类过滤后执行最后一个查询:

$sql_query = "SELECT * FROM photo WHERE generalID IN $complete_array" 

现在这个方法给了我我需要的结果,但正如你所期望的,超过 2000 个项目和 30 多个品牌,它确实会稍微影响性能速度,我尝试做 UNION 查询,但我真的无法理解想法。

如果你们中的任何一位 SQL 大师可以帮助我理解这一点,我将是一只非常快乐的兔子。

最佳答案

SELECT *
FROM
(SELECT *
FROM stock
inner join master using (ID)
inner join photo using (generalID)
WHERE (master.BrandId!=1001 and master.BrandId!=1002) or stock.stock>0
) as whatever
GROUP BY master.generalID

关于php - mysql验证来自多个表数据的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15423195/

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