使用 INNER JOIN 连接三个表并计算距离

使用 INNERJOIN 连接三张表(jobs、商家、customers)并计算距离的完整实现方案如下: 1 . 构建 SQL 查询 使用 INNERJOIN 连接三表的主要逻辑是: jobs 表作为主表,与商家和顾客表关联。
使用 FIND_IN_SET() 函数将 jobs.tradeType 与Traders.tradeTypes 进行匹配(假设Traders.tradeTypes 存储以逗号分隔的字符串)。
通过 jobs.clientEmail=clients.clientEmail 映射客户信息。
添加过滤条件(例如Traders.traderEmail=:traderEmail)。
SQL 查询示例:SELECTjobs.*,clients.clientPostcode,traders.traderPostcodeFROMjobsINNERJOINtradersONFIND_IN_SET(jobs.tradeType,traders.tradeTypes)INNERJOINclientsONjobs.clientEmail=clients.clientEmailWHEREtraders.traderEmail=:traderEmail; 2 . PHP 实现步骤 1 . 执行 SQL 查询使用 PDO 准备语句来防止 SQL 注入并绑定参数: $stmt=$pdo->prepare("SELECTjobs.*,clients.clientPostcode,traders.traderPostcodeFROMjobsINNERJOINtradersONFIND_IN_SET(jobs.tradeType,traders.tradeTypes)INNERJOINclientsONjobs.clientEmail=clients.clientEmailW HEREtraders.traderEmail=:traderEmail");$stmt->bindParam(':traderEmail',$traderEmail);$stmt->execute();2 .计算距离,从查询结果中提取商户和客户的Postcode的交集,调用距离计算函数: while($row=$stmt->fetch(PDO::FETCH_ASSOC)){$origin=$row['traderPostcode'];$destination=$row['client Postcode'];$distance=calculateDistance($origin,$destination);//获取距离距离计算函数if($distance<$maxDistance){//按距离过滤//显示职位信息(示例 HTML 代码段) echo "
JobType:{$row['tradeType']}

{$row['jobDescription']}