2015-08-11 4 views
0

Table1 tblUserBadgesКак объединить три таблицы в один стол?

uid scenid badgeid timestamp 

u0 s1  b0  t1 

u0 s1  b1  t2 

u0 s2  b0  t3 

u1 s1  b3  t4 

u1 s1  b4  t5 

Table2 tblUserWarnings

uid scenid warningid timestamp 

u0 s1  w0   t1 

u0 s1  w1   t2 

u0 s2  w2   t3 

u1 s1  w3   t4 

u1 s1  w4   t5 

Таблица3 tblUserScenScores

uid scenid score attempts timestamp 


u0 s1  20  3   t1 


u1 s1  22  7   t2 

u0 s2  -5  1   t3 

РЕЗУЛЬТАТ: Tabl4 viewUserScenarioStats

uid scenid badges warnings score attempts 
u0 s1  b0, b1 w0, w1  20  3 

u0 s2  b0  w2   -5  1 

u1 s1  b3, b4 w3, w4  22  7 

Я попробовал запрос следующим образом:

CREATE VIEW viewUserScenarioStats AS 
SELECT uid.tblUserBadge, GROUP_CONCAT(scenid).tblUserWarnings, 
GROUP_CONCAT(badgeid).tblUserScrores, warningid.tblUserWarnings, score, attempts 

Как сцепить три таблицы. Но не работает ..... Любая помощь?

ответ

1

Вы можете сделать это

select s.uid , 
s.scenid, 
group_concat(distinct b.badgeid) badges, 
group_concat(distinct w.warningid) `warnings`, 
s.score, 
s.attempts 
from tblUserScenScores s 
join tblUserWarnings w on(s.uid = w.uid and s.scenid = w.scenid) 
join tblUserBadges b on(s.uid = b.uid and s.scenid = b.scenid) 
group by s.uid ,s.scenid 

DEMO

View Demo

+0

Может у меня сказать? как вы это делаете? Есть ли советы для меня? дайте мне свой секретный ключ ... –

+0

@PrashantTapase нет ничего особенного, я только что присоединился к вашим таблицам, а затем сгруппировал результаты на основе того же uid, scenid есть несколько строк из значков и таблиц предупреждений для каждого балла, поэтому с помощью group_concat я слился значков и предупреждений для каждого балла в виде списка, разделенного запятыми, но w0, w1 появляются более чем на 1, поэтому добавляются различные в 'group_concat', чтобы выбрать связанное предупреждение и значок только после того, как я думаю, что имеет смысл для вас –

Смежные вопросы