Php mysql验证来自多个数据表的数据 编辑

Php mysql验证来自多个数据表的数据 编辑,php,mysql,sql,database,Php,Mysql,Sql,Database,我意识到我没有包括品牌代码ID,现在主表保存了品牌ID,其中只有1001和1002是我关心的品牌,其他品牌是第三方品牌 结束编辑部分 首先感谢所有的社区在这里提供的帮助,这是非常有用的所有时间。 我在mysql是一个完全的noob,我开发java、javascript和php,在我当前的项目中,我面临一个问题,需要从我们的数据库中检索数据,考虑到我无法以任何方式修改任何数据库。问题如下: 拥有一个销售不同品牌(包括两个自有品牌)的购物网站,例如,将其命名为“彪马”、“耐克”、“ownbrand1

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

结束编辑部分 首先感谢所有的社区在这里提供的帮助,这是非常有用的所有时间。 我在mysql是一个完全的noob,我开发java、javascript和php,在我当前的项目中,我面临一个问题,需要从我们的数据库中检索数据,考虑到我无法以任何方式修改任何数据库。问题如下:

拥有一个销售不同品牌(包括两个自有品牌)的购物网站,例如,将其命名为“彪马”、“耐克”、“ownbrand1”和“ownbrand2”,仓库只储存“ownbrand1”和“ownbrand2”,如果客户购买任何其他品牌,第三家公司将根据需要发送所需产品。 该网站在许多was中提供了过滤结果的选择,其中之一是只显示我们目前库存的物品

假设我们有3个表,第一个表,我们称之为“库存”,每个产品的库存量都有内部唯一代码(仅限自有品牌),第二个“主控”有每个产品的信息,每个产品都有唯一代码id和一般产品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的项目

期望结果 “彪马”=表演
“耐克”=秀
“ownbrand1”=显示(因为它有一些尺寸的库存)
“ownbrand2”=未显示(因为没有库存)

现在,我首先完成以下查询任务:

$sql_query = "SELECT stock.*, master.*  FROM stock, master WHERE master.ID = stock.ID AND stock.stock > '0'"
然后从主表生成一个包含盘点项目通用代码的数组,然后生成以下查询:

$sql_query = "SELECT * FROM master WHERE generalID NOT IN $previous_array"
并加入两个数组以生成产品品牌的完整列表,以显示在进行更多分类筛选后执行最后一次查询:

$sql_query = "SELECT * FROM photo WHERE generalID IN $complete_array" 
现在这个方法给了我我所需要的结果,但正如你所期望的那样,对于2000多种商品和30多种品牌,它确实有点降低了性能速度,我尝试过使用UNION query,但我真的无法理解这个想法


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

发布所需的输出,根据提供的样本数据。编辑帖子以正确显示所需结果
stock
表的
stock
列中的含义是什么?在本例中,这意味着我不知道产品的当前库存,因为没有我自己的品牌,因此它必须与查询完全无关,可以是0或100,但我不知道,所以这是一个正值,而不是那个列中的问号。正确吗?非常感谢您的回复,它对所有产品都有效,但我面临的问题是,我只需要对wonbrand1和ownbrand2进行库存检查,其他品牌将显示出来,无论您存储的是什么,无论产品是否为您自己的品牌?是否存在布尔字段,库存是否设置为空,泛型是否始终以“owbr”开头?根据品牌代码,例如,仅ownbrand1和ownbrand2,您可以假设它为ownbrand1=1001和ownbrand2=1020,库存将设置为0而不是空,表中没有布尔值,一般id将由生产产品的公司提供,因此完全是随机的。我恐怕看不到可以用来区分自有品牌和第三方品牌的列。如果您要添加一个bit列,比如“own_brand”,如果是您的品牌,则设置为1。您可以将where更改为:
where own_brand=0或sum(stock.stock)>0
请检查主表上的编辑,非常感谢
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