已编辑
我意识到我没有包含品牌代码 ID 现在主表包含品牌 ID,其中只有 1001 和 1002 是我关心的其他品牌是第三方品牌。
结束编辑部分
首先感谢所有社区在这里提供的帮助,一直非常有用。我完全是 mysql 的菜鸟,我开发 java、javascript 和当前的 php,在我当前的项目中,我面临一个问题,我需要从我们的数据库中检索数据,考虑到我无法以任何方式修改任何数据库问题都不是如下:
例如,有一个销售不同品牌的购物网站,包括两个自有品牌,将它们命名为“puma”、“nike”、“ownbrand1”和“ownbrand2”,仓库只保留“ownbrand1”和“ownbrand2”的库存,如果客户购买任何其他品牌的第三方公司将根据需要发送所要求的产品。该网站提供了许多过滤结果的选择,其中之一是仅显示我们目前有库存的商品。
假设我们有 3 个表,第一个表,我们称之为“库存”,其中包含每个产品的内部唯一代码(仅限自有品牌)的库存数量,第二个“主”具有每个具有唯一代码 id 和一般信息的单个产品的信息产品id和第三个表格“照片”保存图片,目的是在网站上展示图片信息和一般产品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 的商品才会显示
期望的结果
"puma" = show
"nike" = show
"ownbrand1" = show (因为它有一些尺码的库存)
"ownbrand2" = not shown (因为没有库存)
现在我完成了首先做这个查询的任务:
$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 大师可以帮助我理解这一点,我将是一个非常快乐的兔子。