使用INNER JOIN从SELECT DISTINCT中检索PRIMARY KEY值

时间:2016-02-07 04:57:11

标签: mysql join primary-key multi-table

我有一组连接表,我通过以下方式查询:

$query = $this->mysqli->query("
    SELECT DISTINCT name, website, email
    FROM sfe
    INNER JOIN ef ON sfe.ID_SFE = ef.ID_SFE
    INNER JOIN f  ON   f.ID_F   = ef.ID_F
    INNER JOIN ad ON  ad.ID_SFE = ef.ID_SFE
    WHERE name         LIKE '%{$sanitized}%' OR 
          website       LIKE '%{$sanitized}%' OR
          business_name LIKE '%{$sanitized}%' OR
          email         LIKE '%{$sanitized}%'
");

其中ID_SFE是表sfe的主键,也是ef的外键。

当我进行此查询时,我会使用以下内容回显结果列表:

while ($result = $query->fetch_object()) {
    $query_result = $result->"name";

    echo "$query_result"
}

因为现在我想在同一个while循环中找到ID_SFE的值,我尝试在SELECT DISTINCT列表中添加ID_SFE以及名称,网站,电子邮件,但是,我得到ERROR: There was a problem with the query.

如何获取ID_SFE的值并将其存储到while循环中的另一个变量?

由于

1 个答案:

答案 0 :(得分:1)

您不能简单地将ID_SFE添加到要检索的字段列表中,因为此类字段存在于ad和ef表中。

您可以添加ad.ID_SFE和/或ad.ID_SFE字段 - 在指定字段时需要指定表名,因为字段需要明确引用。