我有一些麻烦,下面的问题,会告诉你我有什么,我想要什么,我都试过...选择子查询子表
我想要什么:我有一个家长和孩子表中,母公司是
访问
和子表是
评估
,有一个在两者之间定义一对多的关系,请参见下面的表结构:
SELECT
VisitPk, (Primary Key)
ClientFk,
ClientSiteFk,
AssessorFk,
VisitStartDate,
VisitEndDate,
CONCAT(MONTHNAME(TargetDate), ' ', YEAR(TargetDate)) AS TargetMonth,
Duration,
VisitStatus,
TargetDate,
`Long`,
Lat,
VisitPlanRequired,
VisitPlanIssued,
VisitPlanStatus,
VisitPlanAttachment,
DATE_SUB(VisitStartDate, INTERVAL 1 Month) AS VisitPlanDue,
Overnight,
YEAR(TargetDate) AS `Year`
FROM visits
ORDER BY YEAR(TargetDate) DESC, TargetDate, VisitStartDate
和
SELECT
assessments.AssessmentPk, (Foreign Key)
assessments.VisitFk,
assessments.`Scope`,
FROM assessments
我需要的是把一个领域到评估表,以便从查看表中查找所有范围,然后对它们进行分组。 E.G访问pk 1有两个条目3个子记录,1,2和3,id喜欢使用concat/implode函数在父表中显示为1,2,3。
我可以用PHP做到这一点,并将数据物理存储在表中,但我宁愿不走这条路。
我已经尝试在第一个选择语句运行子查询,但没有甚至接近第二选择语句。
我一直在使用这个〔实施例中发现也试过:Can I concatenate multiple MySQL rows into one field?,如:
SELECT person_id, GROUP_CONCAT(hobbies SEPARATOR ', ')
FROM peoples_hobbies GROUP BY person_id
最后,我需要的是有人告诉我怎样可以使用上述group_contact例如放置第二个SELECT语句,但通过查找where assessmentfk = assessmentpk的子表。
因此,像:
SELECT
VisitPk, (Primary Key)
ClientFk,
ClientSiteFk,
**CONCAT(SELECT `scope` from assessments LEFT OUTER JOIN assessments ON visits.VisitPk = assessments.VisitFk) as `Scope`**
AssessorFk,
VisitStartDate,
VisitEndDate,
CONCAT(MONTHNAME(TargetDate), ' ', YEAR(TargetDate)) AS TargetMonth,
Duration,
VisitStatus,
TargetDate,
`Long`,
Lat,
VisitPlanRequired,
VisitPlanIssued,
VisitPlanStatus,
VisitPlanAttachment,
DATE_SUB(VisitStartDate, INTERVAL 1 Month) AS VisitPlanDue,
Overnight,
YEAR(TargetDate) AS `Year`
FROM visits
ORDER BY YEAR(TargetDate) DESC, TargetDate, VisitStartDate
我希望这是有道理的,并且有人可以帮助,这是远远超出了我在过去提前做了道歉。
我也已经尝试(SELECT GROUP_CONCAT('scope' SEPARATOR '')从评估LEFT OUTER JOIN评估ON visits.VisitPk = assessments.VisitFk GROUP连接两个表和组)作为Scope, – jaykay79
和group_concat('Scope')作为来自评估的标准,其中visits.VisitPk = assess.VisitFk, – jaykay79