我想要的查询超出了我的SQL知识,所以我希望在这里得到一些帮助。我希望从postgreSQL 9.2中的多个表中获得相关性。我知道程序,但我不知道SQL。
此查询中有4个表:
这些表看起来像这样(删除了不相关的列):
以下是结果表的外观:
让我解释一下结果表:
我已经在item_info表中填写了上面示例表的实际结果,所以我想它应该很清楚,但如果你没有得到什么,请告诉我。
我按照评论中的建议创建了一个SQLFiddle:http://sqlfiddle.com/#!12/9fd60 它包含与图像中相同的模式和值。
答案 0 :(得分:3)
这应该做你想要的:
WITH a AS (
SELECT item.id, string_agg(prefered_store.store::varchar, ',') wishlist_stores
FROM item, list_wishlist, wishlist, prefered_store
WHERE item.list=list_wishlist.list
AND list_wishlist.wishlist=wishlist.id
AND wishlist.prefered_stores=prefered_store.id
GROUP BY item.id
), b AS (
SELECT item.id,
string_agg(
prefered_store.store::varchar || ',' || prefered_store.comment,
' ; ') item_stores_comments
FROM item, prefered_store
WHERE item.prefered_stores=prefered_store.id
GROUP BY item.id
)
SELECT a.id,item_stores_comments,wishlist_stores
FROM a,b
WHERE a.id=b.id