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

时间:2012-08-22 16:23:01

标签: php mysql

对不起,我不确定要给出这个标题的确切名称,并且无法找到任何其他关于它的帖子,虽然我确定它一定不是很难 - 我只是不知道该怎么做。

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

在我说它可能听起来更令人困惑之前,这是我需要实现的基本概要:

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

我不知道该放什么地方???是..

special_id是从table2生成的,在表2中还有一个名为CODE的列 - CODE用于在表1上创建前缀

TABLE 1  
+--------+------------+  
| prefix | special_id |

TABLE 2  
+------------+------+  
| special_id | CODE |

我需要比较table2中的CODE并查看它是否等于table1上的prefix ..两个表上的链接都是special_id

(CODE和前缀经常匹配,这就是我需要检查它的原因)

很抱歉,如果我的解释不够清楚,我会非常感谢任何建议 - 我只是不知道如何在special_id和$ table2 ['code']之间编写代码以使它们一起运行。

感谢您的阅读。

编辑:

我有“A”版本正常工作,虽然它通常可以为我取得正确的结果,但在某些情况下却没有(由于其他因素),所以我仍然希望保留类似的线条类型:

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

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

编辑:答案

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

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

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

2 个答案:

答案 0 :(得分:0)

就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

答案 1 :(得分:0)

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

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

或者,为了清楚起见:

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