我一直在寻找这个太久,我已经失去了逻辑的所有能力。指针/非常感谢。查询获取不在列表中的项目,但与列表中的项目有关
我有三个表,如下所示,重要的列。
表:类别
+-------+--------------+ | catID | catName | +-------+--------------+ | 1 | somename | | 2 | stringname | | 3 | thirdcat | | 4 | stringcat | | 5 | stringother | | 6 | sixthcat | +-------+--------------+
表:产品
+-----+------+ | pID | pCat | +-----+------+ | 22 | 1 | | 33 | 1 | | 44 | 7 | | 55 | 9 | +-----+------+
表:Prodcats
+-----+-------+ | pID | catID | +-----+-------+ | 22 | 2 | | 22 | 6 | | 33 | 3 | | 33 | 5 | | 44 | 3 | | 44 | 6 | | 55 | 5 | | 55 | 6 | +-----+-------+
我有类ID的列表。我需要使用这个列表来返回catName中特定字符串的类别。
我想加入到这个列表中,如果(从大类)类:
catName LIKE %string% AND catID IN ($mycats)
显然没有问题存在。
但是我还需要2若要一种产品,是在CATID 1
这就是我的头打破了返回(包含字符串“”),但只有当他们是相关的(在prodcats)类别2和5。
这可能是有用的了解以下内容:
- 在$ mycats这些ID可能会或可能不会出现在产品表PCAT。
- $ mycats中只有一个或两个项目 - 如果有两个项目,一个将始终是一个名称中包含我正在寻找的字符串的猫,第二个永远不会。
编辑: - 添加上面的示例表数据和下面的一个例子,使这个更清晰。
一个例子是: $ mycats = 1,4
我需要得到CATID 4 - 他们的名字都包含字符串 ''。这很简单。
但我也想获得catID 2和5,因为它们也包含字符串,并且虽然不在$ mycats中附加到产品中catID为1的表pridcats中的pID。
我希望能让它更清楚一点。这点对我来说就像泥巴。
两个问题;是pCat(在产品表中)一个ID?并且我可以假设该pCat不在该pID的prodcats表中? – caitriona
我用更好的表格轮廓和希望更清晰的例子更新了这个问题。你是对的,产品表中的pCat不会出现在与pId相关的产品中。 – Katherine
用提交SQL查询的编程语言实现这种逻辑会更容易。 否则,您可以尝试为您的catID 2和5设置单独的查询,然后使用'UNION'加入结果。 – coproc