【发布时间】:2019-07-07 11:34:23
【问题描述】:
我们有 3 张桌子:
- 捐款
- 用途
- 费用
捐款:
+--------+------+
| do_id | name |
+--------+------+
| 1 | A |
| 2 | B |
| 3 | A |
| 4 | D |
| 5 | B |
| 6 | B |
| 7 | A |
| 8 | B |
+--------+----- +
目的:
+-------+-------+--------+
| pu_id | do_id | purpose|
+-------+-------+--------+
| 1 | 2 | abc |
| 2 | 2 | def |
| 3 | 2 | gih |
| 4 | 3 | jkl |
+-------+-------+--------+
费用:
+-------+-------+---------+
| ex_id | do_id | expense |
+-------+-------+---------+
| 1 | 2 | abc |
| 2 | 2 | def |
| 3 | 2 | gih |
| 4 | 3 | jkl |
+-------+-------+---------+
现在我想查询以获取捐赠者 B 的所有捐款,然后加入 用途表 以获取与每个 donation_id 相关的所有用途加入 expenses table 以获取与 donation_id 相关的所有费用,并将所有这些费用独立地放在每个循环中
Row number 0
donation_id = 1
array(purposes)
array(expenses)
Row number 1
donation_id = 2
array(purposes)
array(expenses)
Row number 2
donation_id = 3
array(purposes)
array(expenses)
Row number 3
donation_id = 4
array(purposes)
array(expenses)
这是我的尝试:
SELECT *, (
SELECT *
FROM `donation_purposes`
WHERE `donation_purposes`.`dopu_donation_id` = 4
) AS `purposes`
FROM `donations`
WHERE `donation_id` = '4'
提前致谢
【问题讨论】:
-
这看起来你对如何使用结果相当模糊。您只是将它们视为文本还是最终想要某种 JSON 结构?您可以使用“group by”和“group_concat”来获取一些包含数据的文本,但在您描述的上下文中,我真的看不出它有什么用处。