环境:
- PHP 5.3.5
- Oracle 11g数据库
表名:tips_categories
id category picture 1 a e.jpg 2 b f.jpg 3 c g.jpg
表名:提示
id tips_categories_id tip 1 3 This is a tip. 2 2 This is another tip. 3 1 This is yet another tip.
期望的结果:
$array_name['tips'] [0] category => a picture => e.jpg tips [0] => This is yet another tip. [1] category => b picture => f.jpg tips [0] => This is another tip. [2] category => c picture => g.jpg tips [0] => This is a tip.
编写一个返回所需resuilt的查询超出了我目前对SQL的了解。 INNER JOIN不会返回所需的结果。如果无法在一个查询中完成, 我想必须使用以下两个查询:
SELECT id,category,picture FROM tips_categories
SELECT tip FROM tips WHERE tips_categories_id = id
我非常感谢有关如何在一个语句中编写此查询的建议。谢谢: - )
答案 0 :(得分:3)
查询不返回分层结果集。所以你要做的就是不可能。
您可以编写一个简单的内连接查询,按id
排序,然后创建自我迭代结果集的数组,并在每次id
更改时向数组中添加一个新条目。 / p>
查询:
SELECT tips.id,category,picture, tip
FROM tips_categories
INNER JOIN tips on (tips_categories_id = id)
ORDER BY tips.ip
因此,您的结果集将类似于:
id category picture tip
1 a e.jpg This is yet another tip A01.
1 a e.jpg This is yet another tip A02.
1 a e.jpg This is yet another tip A03.
2 b f.jpg This is another tip B01.
2 b f.jpg This is another tip B02.
3 c g.jpg This is a tip C01.
如果您的tips
表格中有更多条目。
使用PHP进行迭代并在阵列上生成所需的结果。它应该非常简单明了。
答案 1 :(得分:3)
好吧:
SELECT c.id, c.category, c.picture, t.tip
FROM tips_categories AS c
INNER JOIN tips AS t
ON t.tips_categories_id = c.id
当然会返回您想要的数据,但提示只是第4列,而不是某种层次结构。
你有什么用来从结果中构建你的数组?