gpt4 book ai didi

php - 获取列值作为数组、Zend_Db、Mysql、php

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

我有以下数据库表:

  1. 表: 人员 列: id、名字、年龄、城市、州
  2. 表格: 研究 列: id、名称、描述、注释
  3. 表: person_studies 列: person_id、study_id、笔记

我需要获取特定人员参与的所有研究名称:

person.id, person.first_name, person.city, study.name

这是我为获取 person.id = 14 的数据而编写的查询:

select person.id, person.first_name, study.name from person
left join person_studies on person.id = person_studies.person_id
left join study on person_studies.study_id = study.id
where person.id=14;

由于一个人可能参与多项研究,因此我在结果集中得到了不止一行。我需要使用 Zend_Db api 来实现这一点。

问题是:

    1. 有没有更好的方法来编写这个查询?
    2. 如果我想在单独的数组中获取 Study.name 值作为结果集的一部分,是否可以在查询中执行此操作,以便当我在 Zend 中运行查询时:
        `$result = $this->fetchAll($select);` 
    其中$select是sql语句$结果应采用以下格式:
        [0] => Array    (      [person.id] => 14      [first_name] =>Jamie      [study_names] => Array                        (                          [0] => biotechnology;                          [1] => mathematics;                          [2] => aeronautics;                       )    )

任何帮助将不胜感激。

谢谢

最佳答案

我找不到更好的方法来编写查询,但就第二个问题而言,我找到了使用group_concat()的以下解决方案。

最终的查询现在如下所示:

select person.id, person.first_name, person.city, person.state, group_concat(study.name separator '|') as studynames from person
left join person_studies on person.id = person_studies.person_id
left join study on person_studies.study_id = study.id
where person.id=14;

我们还可以在group_concat中指定其他子句,例如distinct。请引用链接http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat有关此条款的详细说明。

关于php - 获取列值作为数组、Zend_Db、Mysql、php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10923651/

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