我有segment
表segmentCode, Description, pst-active, ...
。我还有subarea
表FK SegmentCode, deelgebiedID, Deelgebied, ...
。现在我想选择所有细分,但也要选择细分的子区域。我理想的阵列是
segments[[segmentCode, Description, ..., [array with subareas data]],[segmentCode, Description, ..., [array with subareas data]]]
如何在查询中执行此操作?我试过这个,但它只是给了我重复的段......
答案 0 :(得分:1)
有两种方法可以实现这一目标:
在数据库上执行一个包含所有必需信息的select语句,并从中构建数组。声明会像SELECT * FROM segment seg JOIN subarea sub ON seg.segmentCode = sub.SegmentCode ORDER BY seg.segmentCode, sub.deelgebiedID;
这样的东西。然后,您必须遍历结果,跟踪segmentCode并在segmentCode更改时创建新的段对象。虽然它没有改变,你只需将子区域添加到该对象(或创建一个数组)。
另一种方法是将流程分成几个选项。首先使用SELECT * FROM segment seg ORDER BY seg.segmentCode;
获取细分。然后遍历检索到的段并获取每个子区域:SELECT * FROM subarea sub WHERE sub.SegmentCode = PARAMETER ORDER BY sub.deelgebiedID;
。
在您的情况下选择哪种方法是在性能(一个数据库语句通常要好得多)与内存消耗和代码复杂性之间进行权衡。
答案 1 :(得分:0)
好的,试试这个。
SELECT s.segmentCode, s.Description, a.*
FROM segment s
LEFT JOIN subarea a
ON (s.segmentCode = a.SegmentCode);
我希望它适合你。