PHP查询-如何比较不同表中的两列以匹配一列


PHP query - How to compare two columns from different tables to match one column

对不起,我不确定该给它起什么标题,也找不到任何其他关于它的帖子,尽管我相信它一定不是很难-我只是不知道如何做。

在php查询中,我需要将数据库中的一列与另一列(在不同的表上)进行比较,看看它们是否匹配(使用==)。然而,另一个表上需要匹配的第二列只能由位于与第一列相同的表上的第三列来确定。

在我让它听起来更令人困惑之前,这里有一个我需要实现的基本纲要:

if ($this->prefix == $user->special_id ??? $table2['CODE']) {

我不知道该把什么放在哪里???是..

special_id是从表2生成的,在表2上还有一个名为CODE的列-CODE是用来使表1上的前缀的

TABLE 1  
+--------+------------+  
| prefix | special_id |
TABLE 2  
+------------+------+  
| special_id | CODE |

我需要比较表2中的CODE,看看它是否等于表1中的prefix。两个表上的链接都是special_id

(代码和前缀经常可以匹配,这就是为什么我需要检查它)

很抱歉,如果我的解释不够清楚,任何建议都将不胜感激——可以说,我只是不知道如何在special_id和$table2['code']之间编写代码,使它们一起操作。

感谢您的阅读。

编辑:

我有一个"A"版本,虽然它通常能为我带来正确的结果,但也有一些情况(由于其他因素)没有,所以我仍然希望保留类似类型的线路:

(这一次确实带来了结果,但结果并不总是正确的(我不想将special_id与specialid进行比较,我需要将前缀与另一个表中的specialid的代码进行比较),所以如果有人能帮忙,请提出建议)

if($this->special_id=$user->special_id&&$this->prefix=$table2['CODE']){

编辑:答案

如果没有看到所有的代码,任何人都很难回答这个问题,但如果有人碰巧遇到类似的问题,答案是:

if($this->prefix==$table2['CODE']){

cj有一半的答案是对的,所以给了他正确的答案。

看起来你正在使用某种ORM。我不建议在PHP中使用ORM,但如果你正在这样做,我会尝试这样的方法:

if ($this->prefix == $user->special_id && $this->prefix == $table2['CODE']) 
{
}

或者这个,为了清楚起见:

if (($this->prefix == $user->special_id) && ($this->prefix == $table2['CODE'])) 
{
}

就MySQL语句(我建议您使用)而言,它看起来像:

SELECT t1.special_id as special_id 
    FROM table1 as t1
INNER JOIN table2 as t2
    ON t1.special_id = t2.special_id
WHERE t1.prefix = t2.CODE