使用 INNER JOIN 从 SELECT DISTINCT 中检索 PRIMARY KEY 值
Retrieve PRIMARY KEY value from SELECT DISTINCT with INNER JOIN
我有一组连接的 tables,我正在通过以下方式查询:
$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
是table的主键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 循环内的另一个变量?
谢谢
您不能简单地将 ID_SFE 添加到要检索的字段列表中,因为广告和 ef tables 中存在此类字段。
您将能够添加 ad.ID_SFE and/or ad.ID_SFE 字段 - 注意您需要在指定字段时指定 table 名称,因为字段需要被明确引用。
我有一组连接的 tables,我正在通过以下方式查询:
$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
是table的主键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 循环内的另一个变量?
谢谢
您不能简单地将 ID_SFE 添加到要检索的字段列表中,因为广告和 ef tables 中存在此类字段。
您将能够添加 ad.ID_SFE and/or ad.ID_SFE 字段 - 注意您需要在指定字段时指定 table 名称,因为字段需要被明确引用。