SQL从另一个表加入

时间:2014-03-13 08:30:20

标签: mysql sql

我有segmentsegmentCode, Description, pst-active, ...。我还有subareaFK SegmentCode, deelgebiedID, Deelgebied, ...。现在我想选择所有细分,但也要选择细分的子区域。我理想的阵列是

segments[[segmentCode, Description, ..., [array with subareas data]],[segmentCode, Description, ..., [array with subareas data]]]

如何在查询中执行此操作?我试过这个,但它只是给了我重复的段......

2 个答案:

答案 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);

我希望它适合你。