2013-05-04 3 views
0

SQL :LINQ - 3 서브함으로써 그룹 선택 카운트

SELECT i.name, l.city, COUNT(l.city) AS num 
FROM locality l 
JOIN event e ON e.ID_locality = l.ID 
JOIN program p ON p.ID_event = e.ID 
JOIN interpreter i ON i.ID = p.ID_interpreter 
WHERE i.name = 'XXXX' 
GROUP BY l.city 
HAVING COUNT(l.city) = (
SELECT MAX(num) 
FROM (SELECT COUNT(city) AS num 
FROM (SELECT l.city FROM locality l 
JOIN event e ON e.ID_locality = l.ID 
JOIN program p ON p.ID_event = e.id 
JOIN interpreter i ON i.ID = p.ID_interpreter 
WHERE i.name = 'XXXX' 
GROUP BY l.city) tmp) tmp2) 

LINQ : 나는 LINQ에서이 선택에 RLY 심각한 문제가

var q4 = from l in db.locality 
     join e in db.event on l.ID equals e.ID_locality 
     join p in db.program on e.ID equals p.ID_event 
     join i in db.interpreter on p.ID_interpreter equals i.ID 
     where i.name == "XXXX" 
     group l by l.city into grp 

안녕하세요, . 나는이 선택을 SQL로 썼지 만, 그룹을 가지고 여러 하위 선택을 사용할 수있는 방법을 알지 못한다. 나는 통역자 "XXXX"가 가장 자주 행동 한 곳과 통역이 몇 번 있었던 도시를 선택하고 싶다. 나도 enter link description here를 점검했다. 그러나 didnt는 내가 그것을 사용하려고 노력하고 있었을 때 나를 도와 준다. 나는 누군가가 나를 도울 수 있으면 행복 할거야. 오리엔테이션을 위해 : databases tables

답변

0

잘 모르겠습니다 만, 그렇게 되길 바랍니다.

var query = (from l in db.locality 
      join e in db.event on l.ID equals e.ID_locality 
      join p in db.program on e.ID equals p.ID_event 
      join i in db.interpreter on i.ID equals p.ID_interpreter 
      group l by new { i.name, l.city } into g 
      where i.name == "XXXX" && 
      g.Count(x => x.city) == (from l in db.locality 
              join e in db.event on l.ID equals e.ID_locality 
              join p in db.program on e.ID equals p.ID_event 
              join i in db.interpreter on i.ID equals p.ID_interpreter 
              where i.name == "XXXX"     
              group l by l.city into g 
              select new 
              { 
               cityCount = g.Count(x => x.city) 
              }).Max() 

      select new 
      { 
       g.key.name, 
       g.key.city, 
       maxNum = g.count(x => x.city) 
      }).ToList(); 
+0

감사합니다. Ur 솔루션은 g.count (x => x.city) = (... does not work.) g.count (x => x.city) == (...가되어야한다고 생각합니다. subselect가 int number를 반환 할 필요가 있습니다. Cuz g.Count() == 여기서 int number가 필요합니다. 그래도 조금 수정하면됩니다. 그러나 많이 고마워요 :) – Matwosk

+0

흠. 예. g.Count (x => x.city) == 반드시 있어야합니다 .g.Count (x => x.city) == 대괄호가 작동하는 것보다 늦게 취소합니다. 제대로 작동했기 때문에 기쁩니다. –