2014-07-08 4 views
0

내가 2 개 테이블VB.NET의 ReportViewer 내부가 제대로

tableAssembly, 컬럼의 serialNumber, 부지, 무게와 컬럼의 serialNumber, Brick1SerialNumber, Brick2SerialNumber, DateInserted

tableBricks, DateMeasured와

이 작업에 참여하게하는 방법 VB.NET (윈폼)에서

내가 일을하고 두 테이블에서 정보를 인쇄하여도/비활성화 열을 가능하게하고, 경우 같은 LIKE

을 필터를 적용 할 ReportViewer 컨트롤을 얻을 수 있었다 그것은 is not clear tableAssembly.Brick1SerialNumber = tableBricks.SerialNumber

사용자가 tableAssembly에서 보고서를 인쇄 할 때 Brick1SerialNumber.Lot 또는 Brick2SerialNumber.Lot을 기준으로 필터링 할 수 있기를 원합니다. Brick1SerialNumber.DateMeasured 또는

은 내가 INNER 필요 JOIN 이해 Brick2SerialNumber.DateMeasured tableAssembly.Brick1SerialNumber = tableBricks.SerialNumber 및 tableAssembly.Brick2SerialNumber = tableBricks.SerialNumber

나는 또한에 tableBricks에서 다른 열을 가입 INNER해야합니까 tableAssembly의 열? 또는 Brick1SerialNumber = SerialNumber 및 Brick2SerialNumber = Serial의 INNER JOIN을 사용하여 .Lot 기반 필터를 만들 수 있습니까?

답변

0

이 접근 방법에는 두 가지가 있습니다. 1) tableBricks에 두 번 가입 (이 조건에는 필요하지 않음)하거나 두 번 외래 키 (이 조건에는 작동하지만 모든 조건에 대해서는 작동하지 않음)를 사용하여 한 번 연결하십시오.

SELECT tableAssembly.* 
FROM tableAssembly INNER JOIN tableBricks AS tableBricks1 
    ON tableAssembly.Brick1SerialNumber = tableBricks1.SerialNumber 
INNER JOIN tableBricks AS tableBricks2 
    ON tableAssembly.Brick2SerialNumber = tableBricks2.SerialNumber 
WHERE tableBricks1.Lot = 98 
    AND tableBricks2.Lot = 99 
    AND tableBricks1.DateMeasured = '1/1/2000' 
    AND tableBricks2.DateMeasured = '1/2/2000' 
: 당신이 Brick1 및 Brick2 (안 같은 값)에 대한 특정 부지 또는 DateMeasured 필요한 경우

SELECT tableAssembly.* 
FROM tableAssembly INNER JOIN tableBricks 
    ON tableAssembly.Brick1SerialNumber = tableBricks.SerialNumber 
    OR tableAssembly.Brick2SerialNumber = tableBricks.SerialNumber 
WHERE tableBricks.Lot = 99 --actually means Brick1.Lot or Brick2.Lot 
    AND tableBricks.DateMeasured = '1/1/2000' 

는,이 쿼리를 시도 :

이 쿼리