Reputation: 100
i have a query which is below:
SELECT ROUND(SUM(CASE WHEN scoreanalysis.waveID = 160 THEN scoreanalysis.achievedScore ELSE 0 END)/SUM(CASE WHEN scoreanalysis.waveID = 160 THEN scoreanalysis.applicableScore ELSE 0 END)*100) AS score1,
scoreanalysis.sectionName,
scoreanalysis.sectionID,
scoreanalysis.wave,
scoreanalysis.waveID
FROM shopcategories
INNER JOIN locationcategories ON shopcategories.ID = locationcategories.shopcategoryID
INNER JOIN scoreanalysis ON locationcategories.territoryID = scoreanalysis.territoryID
WHERE shopcategories.formatID = 52 AND locationcategories.isClient = 0
and scoreanalysis.waveID = 160
GROUP BY scoreanalysis.sectionID
ORDER BY scoreanalysis.sectionID
this outputs as
and i have other query which is like same like above but with bit of difference.
SELECT ROUND(SUM(CASE WHEN scoreanalysis.waveID = 160 THEN scoreanalysis.achievedScore ELSE 0 END)/SUM(CASE WHEN scoreanalysis.waveID = 160 THEN scoreanalysis.applicableScore ELSE 0 END)*100) AS score2
FROM shopcategories
INNER JOIN locationcategories ON shopcategories.ID = locationcategories.shopcategoryID
INNER JOIN scoreanalysis ON locationcategories.territoryID = scoreanalysis.territoryID
WHERE shopcategories.formatID = 52 AND locationcategories.isClient = 1
and scoreanalysis.waveID = 160
GROUP BY scoreanalysis.sectionID
ORDER BY scoreanalysis.sectionID
what i want is to mix tables to display as below:
any possible solution to this? Any help thanks
Upvotes: 0
Views: 79
Reputation: 12610
You can join/reference the same table more than once in a single query, like:
SELECT
scoreanalysis.sectionID,
ROUND(SUM(CASE WHEN scoreanalysis.waveID = 160 THEN scoreanalysis.achievedScore ELSE 0 END)/SUM(CASE WHEN scoreanalysis.waveID = 160 THEN scoreanalysis.applicableScore ELSE 0 END)*100) AS score1,
ROUND(SUM(CASE WHEN score2.waveID = 160 THEN score2.achievedScore ELSE 0 END)/SUM(CASE WHEN score2.waveID = 160 THEN score2.applicableScore ELSE 0 END)*100) AS score2
FROM shopcategories
INNER JOIN locationcategories ON shopcategories.ID = locationcategories.shopcategoryID
INNER JOIN scoreanalysis ON locationcategories.territoryID = scoreanalysis.territoryID
-- Join a second time:
INNER JOIN locationcategories AS location2 ON shopcategories.ID = location2.shopcategoryID
INNER JOIN scoreanalysis AS score2 ON scoreanalysis.sectionID = score2.sectionID AND location2.territoryID = score2.territoryID
WHERE shopcategories.formatID = 52
AND locationcategories.isClient = 0
AND location2.isClient = 1 -- Reference to alias
AND scoreanalysis.waveID = 160
AND score2.waveID = 160 -- Reference to alias
GROUP BY scoreanalysis.sectionID
ORDER BY scoreanalysis.sectionID
Upvotes: 1
Reputation: 1
In order to display the content into one table you need to join them, and in order to do so, the two tables has to have similar parameters in between.
Upvotes: 0