table1与table2均为mysql数据库中的表,项目成员表为查询结果,求sql语句。希望大佬指点
恕我直言 这数据库这么设计,工作?劝你回去再学一年,学习?那还不如打游戏
尽管这么恶心 顶着恶心;还是写了sql,只能说能跑,效率什么的,不想说话
sql:
SELECT
tab1.*,
tab2.test_persons_name AS '测试人员'
FROM
(
SELECT
t.id,
t.project_name AS '项目名称',
t4.real_name AS 'pm_name',
GROUP_CONCAT( t3.real_name ) AS 'develop_persons_name'
FROM
(
SELECT
SUBSTRING_INDEX( SUBSTRING_INDEX( develop_persons, ',', t2.help_topic_id ), ',',- 1 ) AS user_id,
t1.id,
t1.pm,
t1.project_name
FROM
table1 t1
LEFT JOIN mysql.help_topic t2 ON t2.help_topic_id <= ( LENGTH( t1.develop_persons ) - length( REPLACE ( t1.develop_persons, ',', '' ) ) + 1 )
WHERE
t2.help_topic_id > 0
) t
LEFT JOIN table2 t3 ON t.user_id = t3.user_id
LEFT JOIN table2 t4 ON t.pm = t4.user_id
GROUP BY
t.id,
t.project_name
) tab1
LEFT JOIN (
SELECT
t.id,
GROUP_CONCAT( t3.real_name ) AS 'test_persons_name'
FROM
(
SELECT
SUBSTRING_INDEX( SUBSTRING_INDEX( test_persons, ',', t2.help_topic_id ), ',',- 1 ) AS user_id,
t1.id
FROM
table1 t1
LEFT JOIN mysql.help_topic t2 ON t2.help_topic_id <= ( LENGTH( t1.test_persons ) - length( REPLACE ( t1.test_persons, ',', '' ) ) + 1 )
WHERE
t2.help_topic_id > 0
) t
LEFT JOIN table2 t3 ON t.user_id = t3.user_id
GROUP BY
t.id
) tab2 ON tab1.id = tab2.id