SQL WHERE子句逻辑

时间:2017-06-14 13:37:16

标签: php mysql

我需要逻辑方面的帮助。我很困惑,这就是事情:

我有一件事。用户选择2个代码:Tag1Tag2

  • Tag1是必需的,Tag2是可选的。
  • 如果仅选择了标记1,则它显示所有具有标记1
  • 的行
  • 如果选择了Tag1 + Tag2,则会显示所有标记为1 AND tag 2
  • 的行

这是逻辑,我使用它并且它完美地运行。

$sql = "SELECT * FROM `TABLE` WHERE tag1 IN ('$tag1','$tag2') $andor tag2 IN ('$tag1','$tag2')  "; 

如果选择了两个标记,则此$andor的值为AND。如果只选择了1个标记,则其值为OR

用户通过GET方法PHP发送tag1tag2值。

<小时/> 问题是:现在,我想添加Tag3。但是不允许用户选择tag3的值。我将在数据库列中输入tag3的值。这是什么,我希望Tag3

  • 如果用户在tag1中选择了一个值,但它在tag1中不存在,但在tag3中存在。因此,它将显示tag3结果。
  • 如果用户从tag1tag2中选择两个值。并且只有1个值匹配,但tag3中存在不匹配的缺失值,然后显示结果。

2更好地解释它的例子:

这是数据库表:

ID     Tag1     Tag2        Tag3

1      Soup    shampoo      Biscuit

2      Cake    Pizza        Burger 

3      Pizza   Soup         Ice Cream

示例1:用户selects Biscuit in tag1, and tag2 = nothing.

在这里,我想在这里显示Row I,因为tag3包含Biscuit

示例2:用户selects Cake in tag 1 and Burger in tag2.

在这里,我想显示第2行,因为它在tag3中包含Cake和Burger

我需要使用的逻辑是什么?我不确定,如果它是微不足道的逻辑或大的。如果它很大,请给我一些想法,我可以通过它来解决它。

0 个答案:

没有答案