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

标签 mysql

我正在尝试通过在 MySQL 服务器上做尽可能多的工作来优化我的 php。我有一个 SQL 查询,它从 Leads 表中提取数据,但同时连接两个标签表以组合结果。我希望添加一家通过关系表链接的公司。

因此,保存两者之间关系的表是relations_value,它只是简单地说明(我添加了示例数据)

parenttable (companies) | parentrecordid (10) | childtable (leads) | childrecordid (1)

公司表有很多列,但唯一相关的列是;

id (10) | companyname (my company name)

因此,此查询当前获取了我需要的所有内容,但我想将公司名称带入查询中:

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

我需要能够进入relations_values表并通过选择childtable=leads和childrecordid=1来拉出parenttable和parentrecordid,并以某种方式加入这些,以便我能够将公司名称作为上述查询中的一列...

这可能吗?

我创建了一个 sqlfiddle:sqlfiddle.com/#!2/023fa/2 所以我希望将company.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

关于mysql - SQL Genius需要..复杂的MySQL查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24665072/

相关文章:

php - move_uploaded_file 在 sql server 上不起作用

mysql - 如何让 MySQL 从包含 CSV 数据作为多列的 TEXT 列加载数据?

mysql :ordering table with day names

python - Trac 使用数据库身份验证

php - 在三个表的查询中。如何在 SQL 中获取一组团队及其成员

mysql - 当我搜索 'û'时,选择查询mysql结果 'u'出现

mysql - 我想做一个合并三个表的mysql触发器可以吗

php - 用于对类别和子类别进行分组的多维数组

asp.net - 大型站点不将 MySQL 与 ASP.NET 一起使用的原因是什么?

mysql - 将多列合并到 1 个结果集中