gpt4 book ai didi

php - 在 SQL 中使用 JOIN

转载 作者:行者123 更新时间:2023-11-29 21:33:55 25 4
gpt4 key购买 nike

我对 SQL 还很陌生,正在尝试掌握最佳实践。我有一个关于使用 JOIN 的问题关键词。现在,我有一个<table>在显示 SQL 表中的“实践”的前端,但前提是该“实践”具有当前用户(“经理”)拥有的“代表”。现在我正在做的是获取属于“经理”(当前登录用户)的“代表”,并循环遍历它们以获取“代表”的 id 并将其插入数组中。当我编写查询时,我会获取属于该数组中任何“代表性”id 的所有实践,并以这种方式构建我的查询:

// Grabbing the reps that are assigned to current user
$owned_reps_id = $database->run_query("SELECT id FROM reps WHERE owner={$_SESSION['current_user_id']}");
$owned_reps_array = array();
while($owned_rep = mysqli_fetch_assoc($owned_reps_id)){
// Throwing non-duplicate values in an array
if(!in_array($owned_rep['id'], $owned_reps_array)){
array_push($owned_reps_array, $owned_rep['id']);
}
}

// Building the query to only grab "practices" where it's `owner` column matches an id in the $owned_reps_array
$query = "SELECT * FROM practices WHERE";
if(!empty($owned_reps_array)){
foreach($owned_reps_array as $rep_owner){
$query .= " owner={$rep_owner}";
if (end($owned_reps_array) !== $rep_owner){
$query .= " OR";
}
};
};
$query .= " ORDER BY practice_name ASC";
$all_practices = $database->run_query($query);

我想知道我是否花了很长的时间来解决这个问题。这段代码确实按照我想要的方式工作,但我觉得我经历了很多只是为了得到结果。再说一遍,我正在做的是:

1) 获取“所有者”列中保存有当前经理 ID 的所有代表。

2) 在这些代表中,然后查看实践表并获取具有从代表中提取的任何 id 的所有实践。 (同样,“practices”SQL 表中有一个“owner”列,用于存储其所属“代表”的 ID)

这是我可以使用 JOIN 做的事情吗?还是我采取的路线有效?

最佳答案

尝试执行此查询:

SELECT 
p.*
FROM
practices p
INNER JOIN reps r ON p.owner = r.id
WHERE
r.owner=:owner_id
ORDER BY
practice_name

(将 :owner_id 替换为数据库查询工具中的数字)

我最好用参数替换插值的 $_SESSION ,并进行一些清理,但这不是你的问题......

关于php - 在 SQL 中使用 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35046903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com