繁体   English   中英

SQL Genius需要..复杂的MySQL查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM