【问题标题】:problem in joining 3 tables using INNER JOIN statement使用 INNER JOIN 语句连接 3 个表的问题
【发布时间】:2021-10-26 21:30:10
【问题描述】:

我正在尝试设置一个 sql 查询,该查询将显示来自选定类型的交易并在一定距离内的工作。我有三张桌子,客户、交易员和工作。我需要的是-

SELECT * from jobs WHERE 所需的工作类型与该交易者提供的工作类型相匹配并且客户和交易者之间的距离在指定范围内

我已经成功完成了第一部分。它显示了与交易员提供的工作类型相匹配的所有工作,但难以获得第二部分。这是我的查询

 $stmt=$pdo->prepare("SELECT jobs.*, clientPostcode, traderPostcode FROM jobs 
                        INNER JOIN traders ON FIND_IN_SET(jobs.tradeType,traders.tradeTypes ) WHERE traders.traderEmail=:traderEmail 
                        INNER JOIN clients ON jobs.clientEmail= clients.clientEmail" );
        $stmt->bindparam('traderEmail',$traderEmail);

    $stmt->execute();
            while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
                //calculate distance between origin and destination 
               IF (condition is ok){
                ?>
                <div class="card col-lg-12 mt-5 text-center">
                    <div class="card-body">
                        <h6 class="card-title text-primary">Job Type: <?php echo $row['tradeType'] ?> (Job Title: <?php echo $row['jobTitle'] ?> ) </h6>
                        <p class="card-text"><?php echo $row['jobDescription'] ?></p>
                        <a class="btn btn-primary" href="">
                        <i class="fas fa-edit fa-xs"></i> Send Interest</a>
                        <a class="btn btn-success" href="" target="_blank">
                        <i class="fas fa-glasses fa-xs"></i> Shortlist</a>
                    </div>
                </div>
                <?php
}
                    }
                ?>

【问题讨论】:

  • WHERE 位于joins 之后
  • “努力获得第二部分” 不是对您的问题的解释。发布问题时,您需要向我们详细说明实际发生的情况以及您进行了哪些调试。开始学习how to debug your PDO queries/statements
  • 查看stackoverflow.com/questions/24370975/… 了解坐标之间的距离。
  • @nbk 非常感谢。我按照您的建议更改了我的代码并且它有效。

标签: php mysql pdo


【解决方案1】:
$stmt=$pdo->prepare("SELECT jobs.*, clients.clientPostcode, traders.traderPostcode FROM jobs 
                    INNER JOIN traders ON FIND_IN_SET(jobs.tradeType,traders.tradeTypes )
                    INNER JOIN clients ON jobs.clientEmail= clients.clientEmail  WHERE traders.traderEmail=:traderEmail " );
$stmt->bindparam('traderEmail',$traderEmail);
    $stmt->execute();
        while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
            
            $origin      = $row['traderPostcode'];
            $destination = $row['clientPostcode'];

然后我使用谷歌距离矩阵 api (cURL) 来计算两个邮政编码之间的距离。我感谢大家的时间。将尝试更具体地解决未来的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-12
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 2023-03-21
    • 2012-05-23
    相关资源
    最近更新 更多