有没有一种方法可以在使用JOIN时将WHERE放在两个数据库中?

时间:2019-07-09 13:57:52

标签: php mysql sql

我有两个表,我们称它们为DB1和DB2,我想加入它们,但同时过滤它们两个。

示例(在PHP中使用):

public function PersonalData($example)
{
    $this->getDBConnection('cms1', 'cms_neu');

    $sql = "SELECT id1, name1, status1, section1  
            FROM DB1 pd
            WHERE id1 = '".$example['id1']."' 
            AND status1 = 1
            JOIN DB2 dp ON pd.section1 = dp.section2
            WHERE dp.type2 = 30";
    $query = $this->dbh->query($sql);
    $result = $query->fetchAll();

    return $result;
}

即使我自己也无法正确解释自己的需求,因此我找不到真正的解决方案

我尝试使用JOIN并在其后添加WHERE / AND,但我认为那不起作用。

因此它应该选择每个id1,并根据type2恰好为30,将section1的值更改为section2中的值。

1 个答案:

答案 0 :(得分:1)

SQL语句由多个子句组成,其中包括SELECTFROMWHERE。这些应该按此顺序显示在SELECT语句中。

JOINFROM子句中的运算符。

因此,您的查询应类似于:

SELECT id1, name1, status1, section1  
FROM DB1 pd JOIN
     DB2 dp
     ON pd.section1 = dp.section2
WHERE pd.id1 = '".$example['id1']."' AND
      pd.status1 = 1 AND
      dp.type2 = 30;

注意:

  • 学习使用参数!不要用参数值来修饰查询字符串。这只会导致代码风险和难以调试的错误。
  • 限定所有列引用,特别是当查询包含的内容超过表引用时。
相关问题