[英]SQL Genius need .. Complex MySQL query
我试图通过在MySQL服务器上进行尽可能多的工作来优化我的php。 我有这个sql查询,它从Leads表中提取数据,但同时又加入了两个标签表以合并结果。 我希望添加通过关系表链接的公司。
因此,包含两者之间关系的表就是lationship_value,它简单地声明(我添加了示例数据)
家长表(公司)| parentrecordid(10)| 儿童桌(潜在客户)| childrecordid(1)
公司表中有很多列,但只有两列是相关的;
id(10)| 公司名称(我的公司名称)
因此,此查询当前可获取我需要的所有内容,但我想将公司名称带入查询中:
SELECT leads.id,
GROUP_CONCAT(c.tag ORDER BY c.tag) AS tags,
leads.status,
leads.probability
FROM `gs_db_1002`.leads
LEFT JOIN ( SELECT *
FROM tags_module
WHERE tagid IN ( SELECT id
FROM tags
WHERE moduleid = 'leads' ) ) as b
ON leads.id = b.recordid
LEFT JOIN `gs_db_1002`.tags as c
ON b.tagid = c.id
GROUP BY leads.id,
leads.status,
leads.probability
我需要能够进入Relationships_values表并通过选择childtable = Leads和childrecordid = 1来拉出parenttable和parentrecordid,并以某种方式加入它们,以便能够在上述查询中将公司名称作为列。
这可能吗?
我创建了一个sqlfiddle:sqlfiddle.com/#!2/023fa/2,所以我想将Companies.companyname作为列添加到查询中。
我不知道将每个表链接在一起的主键和外键是什么..如果您可以更好地了解彼此链接的ID,这将使操作变得更加容易...但是我做了一些事情返回正确的结果...但是由于所有ID均为1,因此可能不正确。
SELECT
leads.id, GROUP_CONCAT(c.tag ORDER BY c.tag) AS tags,
leads.status, leads.probability, companyname
FROM leads
LEFT JOIN (
SELECT * FROM tags_module WHERE tagid IN (
SELECT id FROM tags WHERE moduleid = 'leads' )
) as b ON leads.id = b.recordid
LEFT JOIN tags as c ON b.tagid = c.id
LEFT JOIN relations_values rv on rv.id = b.recordid
LEFT JOIN companies c1 on c1.createdby = rv.parentrecordid
GROUP BY leads.id,leads.status, leads.probability
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.