Запрос MySQL: объединить строки в три таблицы и вывести их как одну - PullRequest
0 голосов
/ 21 июня 2011

Я хочу извлечь информацию из трех таблиц, которые связаны определенными идентификаторами друг с другом.Можете ли вы предложить мне, как я могу это сделать.Я пробовал, но три таблицы слишком сложны.Вот что я пытаюсь сделать:

Here are the three tables and resulting table

Таким образом, в основном из трех таблиц, приведенных выше, я хочу сопоставить USER с соответствующим PID, показывающим количество только определенного типа SPEC, например, ROUND asпоказано в примере.(Может также случиться, что один и тот же PID предоставляется двум разным пользователям, например PID = 1 для пользователя AAA и BBB).

Подскажите, пожалуйста, как это сделать?

Ответы [ 3 ]

1 голос
/ 21 июня 2011
SELECT 
  t1.USER, 
  t1.PID, 
  COUNT(T3.SPEC) AS CountRound
FROM Table1 t1
  LEFT JOIN Table2 t2 ON t1.PID = t2.PID 
  LEFT JOIN Table3 t3 ON t2.LID = t3.LID AND t3.SPEC = 'ROUND'
GROUP BY
  t1.USER,
  t1.PID
0 голосов
/ 21 июня 2011
    select user,pid,count(*) from (

    select table1.user,table1.pid,table3.spec 
    from 
      table1,
      table2,
      table3 
    where 
      table1.pid=table2.pid(+) 
    and table2.lid=table3.lie(+) 
    and table3.spec='Round' 

) 
group by user,pid
0 голосов
/ 21 июня 2011

С чего начать?

SELECT 
 T1.USER, 
 T1.PID, 
 IFNULL(COUNT(T3.SPEC), 0) 
FROM 
 Table1 T1 LEFT JOIN Table2 T2 
  ON T1.PID = T2.PID 
 JOIN Table3 T3 
  ON T2.LID = T3.LID 
WHERE T3.SPEC = 'ROUND'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...