php - 当我真正期待一个合并行时,MySQL 和 INNER JOIN 返回了 2 行

标签 php mysql inner-join

我有以下 SQL:

    $queryString = "
        SELECT 
            c.id,
            c.object,
            c.ref,
            c.title,
            o.value
        FROM 
            organisations c
        INNER JOIN 
            organisationType oT ON
            oT.ref = c.ref 
        INNER JOIN 
            options o ON
            oT.value = o.ref
        WHERE c.ref = '585567'
        ORDER BY 
            title
    ";
  • 我的组织表格包含有关组织的信息(以下是一个组织)

id, dateModified, object, ref, title

2312, 2013-04-22 17:34:55, {"__attributes":{"item_id":6868447,"external_id":..., 585567, Test organisation

  • 我的组织类型表包含一个组织的多个条目,因为一个组织可以有多种不同的类型。 (以下是分配给上述组织的2种类型)

id, dateModified, relativeTable, ref, value

5, 2013-04-22 17:34:55, organisations, 585567, 3

6, 2013-04-22 17:34:55, organisations, 585567, 2

  • 最后,我的选项表为每种类型包含一行可供引用:

id, dateModified, relativeTable, ref, value

1, 2013-04-22 16:36:59, organisations, 2, Client

2, 2013-04-22 16:36:59, organisations, 3, Partner

3, 2013-04-22 16:38:27, organisations, 4, Vendor

我希望能够返回一个组织,其类型嵌入到末尾(o.value)

所以我的结果可能是:

[1] => stdClass Object
        (
            [id] => 2312
            [object] => ""
            [ref] => "585567"
            [title] => "Test organisation"
            [type] => array( [0] => "Client", [1] => "Vendor" )
        )

使用我当前的 SQL,我将返回一个 2 行数组,其中包含该行的所有组件的副本(除了已更改的类型之外)。不错,但并不完美。

最佳答案

你不能像 SQL 中那样直接返回子数组。不过,您可以带回所有值的串联字段。像这样的事情:-

$queryString = "
                SELECT c.id,
                        c.object,
                        c.ref,
                        c.title,
                GROUP_CONCAT(o.value) AS type
                FROM organisations c
                INNER JOIN organisationType oT ON oT.ref = c.ref 
                INNER JOIN options o ON oT.value = o.ref
                WHERE c.ref = '585567'
                GROUP BY c.id, c.object, c.ref, c.title
                ORDER BY title
    ";

关于php - 当我真正期待一个合并行时,MySQL 和 INNER JOIN 返回了 2 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16165873/

相关文章:

php - 无法启用 PHP LDAP,即使我已经编辑了 php.ini 并且 php_ldap.dll 位于正确的位置?

javascript - 两个按钮提交表单问题

mysql - 使用更新连接表时,操作数应包含 1 列

sql-server-2008 - 两个表之间的 SQL 内连接

sql - 使用维恩图来描述表为集合的 SQL 连接是否合适?

sql - postgres 中的子查询或连接联合?

php - 将日期格式(在 DB 或输出中)更改为 dd/mm/yyyy - PHP MySQL

php - PasswordHash 不适用于 CodeIgniter

mysql - 使用 MySQL 获取当前事务 ID

php - 如果没有删除 DB 行,则返回 false?