1
0
mirror of https://github.com/chylex/Lightning-Tracker.git synced 2025-04-09 17:15:49 +02:00

Fix wrong JOIN condition used for active milestone progress & reformat all JOIN conditions

This commit is contained in:
chylex 2020-09-01 08:47:18 +02:00
parent 303f1fdfd8
commit 2f5d58edc8
5 changed files with 11 additions and 13 deletions

View File

@ -187,7 +187,7 @@ SQL
$stmt = $filter->prepare($this->db, 'SELECT COUNT(*) FROM issues i', AbstractFilter::STMT_COUNT);
}
else{
$stmt = $filter->prepare($this->db, 'SELECT COUNT(*) FROM issues i LEFT JOIN milestones m ON i.project_id = m.project_id AND i.milestone_id = m.milestone_id', AbstractFilter::STMT_COUNT);
$stmt = $filter->prepare($this->db, 'SELECT COUNT(*) FROM issues i LEFT JOIN milestones m ON i.milestone_id = m.milestone_id AND i.project_id = m.project_id', AbstractFilter::STMT_COUNT);
}
$stmt->execute();
@ -214,7 +214,7 @@ SELECT i.issue_id AS id,
i.date_created,
i.date_updated
FROM issues i
LEFT JOIN milestones m ON i.project_id = m.project_id AND i.milestone_id = m.milestone_id
LEFT JOIN milestones m ON i.milestone_id = m.milestone_id AND i.project_id = m.project_id
SQL
);
@ -257,7 +257,7 @@ SELECT issues.title AS title,
FROM issues
LEFT JOIN users author ON issues.author_id = author.id
LEFT JOIN users assignee ON issues.assignee_id = assignee.id
LEFT JOIN milestones milestone ON issues.project_id = milestone.project_id AND issues.milestone_id = milestone.milestone_id
LEFT JOIN milestones milestone ON issues.milestone_id = milestone.milestone_id AND issues.project_id = milestone.project_id
WHERE issues.issue_id = :issue_id AND issues.project_id = :project_id
SQL
);

View File

@ -152,7 +152,7 @@ SELECT m.milestone_id AS miles
FLOOR(SUM(i.progress * iw.contribution) / SUM(iw.contribution)) AS progress,
MAX(i.date_updated) AS date_updated
FROM milestones m
LEFT JOIN issues i ON m.project_id = i.project_id AND m.milestone_id = i.milestone_id
LEFT JOIN issues i ON m.milestone_id = i.milestone_id AND m.project_id = i.project_id
LEFT JOIN issue_weights iw ON i.scale = iw.scale
# WHERE
GROUP BY m.milestone_id, m.title

View File

@ -26,7 +26,7 @@ final class ProjectMemberTable extends AbstractProjectTable{
$sql = <<<SQL
SELECT COUNT(*)
FROM project_members pm
LEFT JOIN project_roles pr ON pm.project_id = pr.project_id AND pm.role_id = pr.role_id
LEFT JOIN project_roles pr ON pm.role_id = pr.role_id AND pm.project_id = pr.project_id
SQL;
$stmt = $filter->prepare($this->db, $sql, AbstractFilter::STMT_COUNT);
@ -50,7 +50,7 @@ SELECT pm.user_id AS user_id,
pr.title AS role_title,
IFNULL(pr.ordering, ~0) AS role_order
FROM project_members pm
LEFT JOIN project_roles pr ON pm.project_id = pr.project_id AND pm.role_id = pr.role_id
LEFT JOIN project_roles pr ON pm.role_id = pr.role_id AND pm.project_id = pr.project_id
JOIN users u ON pm.user_id = u.id
SQL;

View File

@ -218,8 +218,7 @@ WHERE role_id = ? AND project_id = ?
AND special = FALSE
AND ordering > IFNULL((SELECT ordering
FROM project_roles pr2
JOIN project_members pm ON pr2.project_id = pm.project_id AND
pr2.role_id = pm.role_id
JOIN project_members pm ON pr2.role_id = pm.role_id AND pr2.project_id = pm.project_id
WHERE pm.user_id = ? AND pm.project_id = pr.project_id), ~0)
SQL
);
@ -260,8 +259,7 @@ WHERE project_id = ?
AND special = FALSE
AND ordering > IFNULL((SELECT ordering
FROM project_roles pr2
JOIN project_members pm ON pr2.project_id = pm.project_id AND
pr2.role_id = pm.role_id
JOIN project_members pm ON pr2.role_id = pm.role_id AND pr2.project_id = pm.project_id
WHERE pm.user_id = ? AND pm.project_id = pr.project_id), ~0)
ORDER BY ordering ASC
SQL
@ -307,7 +305,7 @@ SQL
$stmt = $this->db->prepare(<<<SQL
SELECT prp.permission
FROM project_role_permissions prp
JOIN project_members pm ON prp.project_id = pm.project_id AND prp.role_id = pm.role_id
JOIN project_members pm ON prp.role_id = pm.role_id AND prp.project_id = pm.project_id
WHERE pm.user_id = ? AND pm.project_id = ?
SQL
);

View File

@ -29,8 +29,8 @@ SELECT m.milestone_id AS id,
m.title AS title,
FLOOR(SUM(i.progress * iw.contribution) / SUM(iw.contribution)) AS percentage_done
FROM project_user_settings tus
JOIN milestones m ON tus.project_id = m.project_id AND tus.active_milestone = m.milestone_id
LEFT JOIN issues i ON m.milestone_id = i.milestone_id
JOIN milestones m ON tus.active_milestone = m.milestone_id AND tus.project_id = m.project_id
LEFT JOIN issues i ON m.milestone_id = i.milestone_id AND m.project_id = i.project_id
LEFT JOIN issue_weights iw ON i.scale = iw.scale
WHERE tus.user_id = ? AND tus.project_id = ?
GROUP BY m.milestone_id