방문SQL Server에 아래 표시된 결과를 얻기 위해 다음 2 개의 테이블을 연결하는 방법은 무엇입니까? (계속)
LoginID, StaffName, qno, trackno, tmstamp, Service
1, James, 1001, 1, 01-01-2011, No1 (transfer to No2)
2, John, 1002, 2, 01-01-2011, No1
2, John, 1003, 3, 01-01-2011, No1
1, James, 1001, 1, 01-01-2011, No2 (transfered from No1)
2, James, 1003, 3, 01-01-2011, No1 (recall the queue no)
물질
content, trackno, tmstamp
001, 1, 01-01-2011
002, 1, 01-01-2011
001, 2, 01-01-2011
002, 2, 01-01-2011
003, 2, 01-01-2011
001, 3, 01-01-2011
001, 1, 01-01-2011
001, 3, 01-01-2011
002, 3, 01-01-2011
결과
StaffName, tmstamp, noOfQno, noOfContent
James, 01-01-2011, 3, 5
John, 01-01-2011, 2, 4
은 이미이 질문을했다. (.이 질문에 대한 유사)
how to link the following 2 tables to get the result which is shown below in SQL Server?`
그리고 정답은 이미 존재한다.
SELECT StaffName, tmstamp, noOfQno, noOfContent
FROM (
SELECT StaffName, tmstamp, trackno, COUNT(1) noOfQno
FROM Visit
GROUP BY StaffName, tmstamp, trackno
) a LEFT JOIN
(
SELECT trackno, COUNT(1) noOfContent
FROM Matter
GROUP BY trackno
) b
ON b.trackno = a.trackno
하지만 그 대답에 따르면 대답은 약간 잘못되었습니다. Visit
테이블의 line 1
를 들어, noOfContenct
이 BE2해야하며 Visit
의 line 4
를 들어, noOfContent
이어야
때문에
나는 그 대답은에 따라 얻을 것이다 결과는 ..
Result
StaffName, tmstamp, noOfQno, noOfContent
James, 01-01-2011, 3, 6
John, 01-01-2011, 2, 6
즉 1. 그래서, 3입니다.
그러나 그 대답에 따르면 : line 1
, noOfContent
은 3이고, line 4
도 3입니다. 그러면 총 값은 6이됩니다.
그래서이 문장을 업데이트하는 방법을 묻습니다.
P. 그 진술은 그 결과와 같이 총을주지 않을 것이다. 대신 줄 단위로 값을 줄 것입니다.
'물질'의 기본 키는 무엇입니까? 따라서 '방문'의 외래 키는 무엇인가? 내가 옳은 대답에 딱 맞는 솔루션을 게시 할 수있을 것 같지만 여기에는 디자인에 심각한 결함이있는 것으로 보입니다. 'Matter'의 7 번 줄은 1 번 줄과 아무런 차이가 없습니다. 어떻게 구별해야합니까? –
예. 테이블에는 키가 없습니다. 예, 기본적으로 동일합니다. 그래서 차별화 할 방법을 모릅니다. – william