抱歉,我不能想到更好的标题
通常我们有table
,我们有query
,我们想要其中的行
query = table
但是,如果query > table
所以这里有一个例子,假设我们有一个网站,将想要某些服务的人与公司联系起来,我们有4项服务a,b,c,d,
因此用户可以选择他想要的服务,我们将它们存储在数据库中
wanted :
+-----------+----------+---------+------+--------
| user_id | a | b | c | d |
+-----------+----------+---------+------+--------
| 23 | 1 | 0 | 1 | 0 |
+-----------+----------+---------+---------------
for example this guy wants a,c
现在公司会来我们的网站并说我们提供a,c
所以我查询
$query = "select user_id from wanted where a=1 && c =1 ";
我得到用户21,我会将它们彼此连接。
但是,如果公司提供服务a,b,c
$query = "select user_id from wanted where a=1 && b =1 && c=1 ";
它不会返回用户21,但它应该......它们不是完美匹配,但用户21所需的服务由该公司承保
我知道我应该以相反的方式进行流程并首先存储公司并让用户搜索它们,我不会遇到这个问题,但这个网站是如何运作的
那么我的选择是什么?什么都可以做?
请注意我无法使用OR ||
因为公司应该满足客户的所有需求
所以如果我有一个想要x
的用户a,b,c
和一个有a,b,d
的公司
查询
select * from wanted where a = 1 || b = 1 || d = 1
会返回用户x
,这就错了,因为公司没有涵盖所需的服务c
答案 0 :(得分:0)
我会使用OR来获取至少在一个服务中的所有用户:
$query = "select user_id from wanted where a = 1 OR b = 1 OR c = 1 ";
答案 1 :(得分:0)
几乎看起来似乎太简单了,但OR怎么样而不是AND?
$query = "select user_id from wanted where a=1 or b =1 or c=1 ";
答案 2 :(得分:0)
在您的Senario中,您可以使用或不使用
where a=1 || b =1 || c=1 ";
将返回任何想要产品a,b或c的客户,而不是所有产品。
我个人会改变数据库的结构,所以我有一个产品表和一个客户表,然后两个表之间有1到多个连接。这将允许您查询如下:
where product.product_id IN (1,2,3);