我意识到我现在没有包含品牌代码ID主表持有品牌ID,其中只有1001和1002是我关心其他品牌的第三方品牌。
拥有一个销售不同品牌的购物网站,包括两个自有品牌的例子,可以命名为“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”=显示
“nike”=显示
“ownbrand1”= show(因为它有一些尺寸的库存)
“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大师能帮助我理解这一点,那将是一个非常快乐的兔子。
答案 0 :(得分:1)
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