这是对my previous one的后续问题。
现状:返回多维结果的数据库
Table 1:
+--------------------+--------------------+
| v_id | v_name |
+--------------------+--------------------+
| 1 | v_name1 |
+--------------------+--------------------+
| etc...
Table 2:
+--------------------+--------------------+
| a_id | a_name |
+--------------------+--------------------+
| 1 | a_name1 |
+--------------------+--------------------+
| etc...
Table 3:
+--------------------+--------------------+
| v_id | a_id |
+--------------------+--------------------+
| 1 | 1 |
+--------------------+--------------------+
| 1 | 2 |
+--------------------+--------------------+
| 1 | 3 |
+--------------------+--------------------+
我希望得到一个加入的两个表:
SELECT t1.*, t2.a_name
FROM `table1` t1
LEFT JOIN `table_3` t3 ON t3.v_id = t1.v_id
LEFT JOIN `table_2` t2 ON t2.a_id = t3.a_id
WHERE t1.id = 1;
此查询的结果将是给定的表3排,每排有来自相同的值Table 1
,与Table 3
只是不同的a_name
。
现在,是否有可能让a_name
的数组(在这种情况下是3个单元格)?我认为这是不可能的。如果不是,我将如何构建查询,以便返回一行,a_name
结果与给定的“粘合”字符串结合?
编辑 如果我要得到PHP中的结果,我希望是这样的:
$result = array(
'v_id' => 1,
'a_name' => array('a_name1', 'a_name2', 'a_name3')
);
或
$result = array(
'v_id' => 1,
'a_name' =>'a_name1, a_name2, a_name3'), # assuming I used ', ' as the glue string
);
SQL上没有任何数组数据类型 - 请发布您的预期输出应该是什么样子的示例。听起来像GROUP_CONCAT ... – 2010-01-26 23:25:23
我建议你*不*执行此操作。您的原始查询很好,并且是推荐的方法。 – 2010-01-26 23:42:48
@Mark Byers:我意识到潜在的隐患。我只是想知道如何减少从应用程序到数据库的连接数量,并直接从中获得更多的细节结果。 – 2010-01-26 23:54:24