2017-10-02 8 views
0

私はテーブルの先頭に結合する必要があるこのクエリを修正しようとしています。次に、capstatusのsecondというテーブルを結合します。外部キーを見ることができるcapcaseステータスとcapcaseservicesprovidedstatus私は正しい表に参加する必要があります。私はおそらく私は、この作業を達成するために '内部結合'以外の結合を使用する必要があるかどうか、または最後の2行が私が問題と信じているものとして私が間違っていることを確認したいのだろうかと思います。何か助けていただければ幸いです。事前に感謝します。SQL内部結合問題/代替結合

SELECT family.Id as Family_ID, person.firstName + ' ' + person.lastName as Name, capcaseServicesProvided.idperson as Person_ID,capcaseservicesProvided.idCase as Case_ID, capcaseServicesProvided.Id as Service_ID,capStatus.Status as Case_Status, capServices.Service, capStatusService.ServiceStatus as Service_Status, 
capcaseServicesProvided.Qty, capServicesUnit.Unit, capcaseServicesProvided.Date as Service_Date, capCase.DateApplied as Case_Date 

FROM capcaseServicesProvided 

INNER JOIN person on capcaseServicesProvided.idperson = person.Id 
INNER JOIN capServices on capcaseServicesProvided.idService = capServices.Id 
INNER JOIN capServicesUnit on capcaseServicesProvided.Unit = capServicesUnit.Id 
INNER JOIN capStatusService on capcaseServicesProvided.Status = capStatusService.Id 
INNER JOIN family on person.idFamily = family.Id 
INNER JOIN capStatus on capcaseServicesProvided.Status= capStatus.Id 
INNER JOIN capCase on capCaseServicesProvided.Date = capCase.DateApplied; 
+0

あなたが 'capcaseServicesProvided.Status'を使って加入しているときに' capstatus'にどのように参加できますか? - また、 'capcaseServicesProvided'に' capCase'を 'date'にのみ参加させています...それ以上のことはないでしょうか? – SqlZim

+0

あなたがここで達成しようとしていること(またはあなたの現在のクエリに実際に何が間違っているか)は明らかではありません(少なくとも私にとって)。期待どおりの結果が得られませんか? – ZLK

+0

表の構造やその構造から抜け出そうとしているものの詳細な説明がなければ、助けはありません。 – user2153465

答えて

1

具体的な解決方法を試みるのではなく、アプローチを提案したいと思います。テーブルやそのデザインについては何も知りませんので、どちらかを理解するためにはかなりの情報が必要です。したがって、最終的にはJOINSやそのようなジレンマを解決する方法について学ぶ方が良いです。

は、私はこのような(と思う)あなたが見え最小限に最初のクエリのサイズを小さく勧め:

SELECT 
     family.Id AS Family_ID 
     , person.firstName + ' ' + person.lastName AS Name 
     , capcaseServicesProvided.idperson AS Person_ID 
     , capcaseservicesProvided.idCase AS Case_ID 
     , capcaseServicesProvided.Id AS Service_ID 
FROM capcaseServicesProvided 
INNER JOIN person ON capcaseServicesProvided.idperson = person.Id 
INNER JOIN family ON person.idFamily = family.Id 
; 

は今、最小のクエリが正しいと仮定すると、1つの余分TABLEに参加を含む試してくださいそれからselect節に必要な列まず、INNER JOINを使用して余分なテーブルを追加します。一部の行が消えることがわかった場合は、LEFT JOINに変更してください。

​​

必要なすべての表を結合するまでこのサイクルを繰り返してください。

LEFT JOINSが1つ以上必要ですが、各テーブルのサンプルデータと各テーブルのDDLがないと、どちらのテーブルが必要なのかが分かりません。

関連する問題