我有以下 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/