Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我在查询中需要什么,可能不存在或不存在?_Php_Mysql_Not Exists_Notin - Fatal编程技术网

Php 我在查询中需要什么,可能不存在或不存在?

Php 我在查询中需要什么,可能不存在或不存在?,php,mysql,not-exists,notin,Php,Mysql,Not Exists,Notin,我有一张名为review的表格: 和一个名为category的表: 我的发言: $sql2 = "SELECT * FROM review INNER JOIN category ON review.cat_id = category.cat_id WHERE review.public_or_private = 2"; 这将给我一个结果: review_id cat_id public_or_private cat_

我有一张名为review的表格:

和一个名为category的表:

我的发言:

$sql2 = "SELECT * 
        FROM review 
            INNER JOIN category ON review.cat_id = category.cat_id 
        WHERE review.public_or_private = 2"; 
这将给我一个结果:

review_id   cat_id   public_or_private   cat_id   user_id              
    11          2              2           2        10299
    13          4              2           4        10299
    14          5              2           5        10298
联系人表:

我如何进一步磨练这一点仅当用户id不在联系人表的联系人id列中时,我才需要结果

因此,从用户10300的角度来看,结果应该是:

review_id   cat_id   public_or_private   cat_id   user_id              
    11          2              2           2        10299
    13          4              2           4        10299

我认为我应该使用NOT EXISTS(不存在)或NOT IN(不存在),但不确定该如何使用。

我认为这就是您想要的:

选择* 回顾 review.cat\u id=category.cat\u id上的内部联接类别 在contacts.user\u id=category.user\u id上左加入联系人 其中review.public_或_private=2 和contacts.contact\u id为空 下面是一个支持这一说法的例子:

这也适用于:

选择* 回顾 review.cat\u id=category.cat\u id上的内部联接类别 其中review.public_或_private=2 而且不存在 挑选* 来自联系人 其中contacts.user\u id=category.user\u id ;
这里更新了fiddle:

我发现用户id和联系人id的用法非常混乱。这些代表什么?这意味着什么?你想要的查询实际上是什么?应用程序的每个用户都有一个用户id,它通过php连接到数据库并执行一些操作。“联系人id”列中的“联系人”表包含10300个联系人或任何已登录的用户id。希望这能让它变得清晰一点……所以你需要一个查询,对于任何还没有任何联系人的用户,它返回public_或_private=2的评论,并且还返回写这些评论的用户。这是否仅适用于单个非接触式用户?还是多个?请在发布问题之前仔细研究。答案通常已经在这里了。@KIKOSoftware是的,正确。它适用于任何登录的用户。我正在看下面alx的答案,我想他可能已经解决了我的问题。Tx.不幸的是,这是一个重复的问题。@mickmackusa几乎所有的问题在某种程度上都是重复的,你的意思是你选择了结束这个问题。对,几乎所有的问题都是重复的。我要说的是,有好的和坏的重复。好的——当同一个问题被问到不同的时候,会添加不同的用例、上下文和搜索关键字。糟糕的问题就是这么糟糕的问题:在提问之前很少或根本没有谷歌搜索。这个不好,顺便说一句。@alx很好,谢谢。您的查询实际上给了我一个我没有寻找的:但我修改了它-我正在使用且不存在一个-到且不存在从contacts中选择*,其中contacts.contact\u id=category.user\u id;现在它给出了正确的结果。
review_id   cat_id   public_or_private   cat_id   user_id              
    11          2              2           2        10299
    13          4              2           4        10299
    14          5              2           5        10298
user_id    contact_id
10299       10298
10299       10300
10300       10298
10300       10301
review_id   cat_id   public_or_private   cat_id   user_id              
    11          2              2           2        10299
    13          4              2           4        10299