【问题标题】:Single array where multiple should be returned应返回多个的单个数组
【发布时间】:2013-10-03 08:28:37
【问题描述】:

phpmyadmin 中的以下查询根据我的需要返回具有三个不同条目 ID 的三列 (entry_id)。

SELECT sub_1.entry_id, sub_2.entry_id, sub_3.entry_id
FROM exp_judging_portfolios AS jud
LEFT JOIN exp_submissions AS sub_1 ON sub_1.id = jud.rel_id_1
LEFT JOIN exp_submissions AS sub_2 ON sub_2.id = jud.rel_id_2
LEFT JOIN exp_submissions AS sub_3 ON sub_3.id = jud.rel_id_3
WHERE sub_1.member_group = $member_group
AND jud.pre = 1
GROUP BY jud.rel_id_1

但是,当我在页面中返回结果时,我得到一个只有一个条目 ID 的数组。

这是我用来生成结果的代码

$sql = "
    SELECT sub_1.entry_id, sub_2.entry_id, sub_3.entry_id
    FROM exp_judging_portfolios AS jud
    LEFT JOIN exp_submissions AS sub_1 ON sub_1.id = jud.rel_id_1
    LEFT JOIN exp_submissions AS sub_2 ON sub_2.id = jud.rel_id_2
    LEFT JOIN exp_submissions AS sub_3 ON sub_3.id = jud.rel_id_3
    WHERE sub_1.member_group = $member_group
    AND jud.pre = 1
    GROUP BY jud.rel_id_1
";
    $query = $this->EE->db->query($sql);
    $submissions_portfolio = $query->result_array();    

print_r($submissions_portfolio);   

这是返回的内容:

Array ( [0] => 354 ) 

有人知道为什么吗?如果是这样,如何返回所有 3 个条目 ID?

【问题讨论】:

  • 最后一行是 354 吗?可能它没有在某处合并数组(在 result_array() 方法中),所以只有最后一个结果显示在数组中。
  • 是的,最后一个结果。关于修复的任何想法?
  • 你能告诉我们result_array()方法吗?
  • @davey 抱歉,方法是什么意思?
  • 你在这里调用一个函数:$query->result_array();你能告诉我们这个函数吗?

标签: mysql sql codeigniter codeigniter-2


【解决方案1】:

这次你只得到一个结果的原因是因为所有 3 个选定的 id 都有相同的别名 entry_id。它们最终会相互覆盖。

您应该尝试不同的命名方式:

SELECT sub_1.entry_id AS id_1, sub_2.entry_id AS id_2, sub_3.entry_id AS id_3

【讨论】:

  • 谢谢!我什至没有想到这一点。学习到教训了! (希望)
猜你喜欢
  • 2019-03-17
  • 2021-08-14
  • 2017-06-11
  • 2015-10-29
  • 2021-05-13
  • 2013-06-12
  • 2014-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多