【发布时间】:2015-02-21 17:10:38
【问题描述】:
我试图用我的查询来完成一些事情,但它并没有真正起作用。我的应用程序曾经有一个 mongo db,因此该应用程序用于获取字段中的数组,现在我们不得不更改为 Postgres,我不想更改我的应用程序代码以保持 v1 正常工作。
为了在 Postgres 中的 1 个字段中获取数组,我使用了 array_agg() 函数。到目前为止,这工作得很好。但是,我现在需要另一个不同表的字段中的另一个数组。
例如:
我有我的员工。员工有多个地址和多个工作日。
SELECT name, age, array_agg(ad.street) FROM employees e
JOIN address ad ON e.id = ad.employeeid
GROUP BY name, age
现在这对我来说很好,这将导致例如:
| name | age| array_agg(ad.street)
| peter | 25 | {1st street, 2nd street}|
现在我想在工作日加入另一张桌子,所以我这样做了:
SELECT name, age, array_agg(ad.street), arrag_agg(wd.day) FROM employees e
JOIN address ad ON e.id = ad.employeeid
JOIN workingdays wd ON e.id = wd.employeeid
GROUP BY name, age
这会导致:
| peter | 25 | {1st street, 1st street, 1st street, 1st street, 1st street, 2nd street, 2nd street, 2nd street, 2nd street, 2nd street}| "{Monday,Tuesday,Wednesday,Thursday,Friday,Monday,Tuesday,Wednesday,Thursday,Friday}
但我需要它来产生结果:
| peter | 25 | {1st street, 2nd street}| {Monday,Tuesday,Wednesday,Thursday,Friday}
我知道这与我的联接有关,因为多个联接行多个但我不知道如何完成此操作,谁能给我正确的提示?
【问题讨论】:
标签: sql arrays postgresql aggregate-functions