gpt4 book ai didi

php - mySQL - 在单个选择中使用外部参照表从相关表中获取数据

转载 作者:行者123 更新时间:2023-11-30 23:30:26 25 4
gpt4 key购买 nike

我有两个表,A 和 B,它们在 AB_xref 中一起外部参照。目前,为了从表 B 中获取数据,我将 A 中的所有行转储到一个数组中,然后循环遍历每个索引,找到与该 A 行相关的多个 B 行。然后,我将 B 中的行拼接到 A 中的行数组中 - 创建一个嵌套数组。

有没有办法使用单个选择和条件来做到这一点?

最佳答案

看看这是否能让你接近你想去的地方:

查询:

SELECT
packages.name AS package_name,
activities.name AS activity_name
FROM
package_activity_xref pax
INNER JOIN packages ON packages.id = pax.package_id
INNER JOIN activities ON activities.id = pax.activity_id

PHP:

$results = get_assoc_array_from_sql($your_query);
$outputArray = array();

foreach($results as $result) {
if (array_key_exists($result['package_name'], $outputArray)) {
// we already have an array at this package, push the new item
array_push($outputArray[$result['package_name']], $result['activity_name']);
} else {
// the target array doesn't exist yet, make it
$outputArray[$result['package_name']] = array($result['activity_name']);
}
}

基本上,此代码将遍历整个外部参照表一次(O(n),其中 n 是外部参照中的记录数)。对于每条记录,它将查看包名称并查看该键是否存在于 $outputArray 中。如果没有,则将该键的值设为具有当前事件名称的数组。如果它确实存在,则将当前事件附加到该数组。

如果您在执行后执行 print_r($outputArray),您应该会看到一个包含 x 项的数组,其中 x 是不同的包。数组中的每个元素都是另一个包含 y 元素的数组,其中 y 是给定包的事件数。

注意:您需要自己实现get_assoc_array_from_sql,但我假设您已经使用了一些实现或者正在使用mysqli_fetch_assoc()。或类似的东西。

关于php - mySQL - 在单个选择中使用外部参照表从相关表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10990905/

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