恐れ入りますが、次の問題についてご協力をお願いいたします。
私はこれを非常にシンプルにしています。言葉では説明しきれないので画像で。
テーブルサービス
PERSONID Service_id chargeamount
1 3 20.50
2 4 80.50
3 5 78.80
テーブルチャージ
service_id payed extracharges
3 true 20.50
4 true 80.50
3 false 78.80
未払いの追加料金がある場合は true または false を示す必要があり、サービス ID が 2 番目のテーブルで一致しない場合は、null 値またはその他の計算値を使用してクエリに表示する必要があります。
このようなもの
PERSONID Service_id chargeamount payed
1 3 20.50 false
2 4 80.50 true
3 5 78.80 null
ただし、結合によって作成されたもののように、同じ行の余分な行は許可されていません。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SERVICES](
[personid] [int] NULL,
[service_id] [int] NULL,
[chargeamount] [float] NULL
) ON [PRIMARY]
GO
insert into services (personid,service_id,chargeamount) values ( 1,3 ,20);
insert into services (personid,service_id,chargeamount) values ( 2,4 ,20);
insert into services (personid,service_id,chargeamount) values ( 3,5 ,20);
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[charges](
[payed] [bit] NULL,
[service_id] [int] NULL,
[extracharges] [float] NULL
) ON [PRIMARY]
GO
insert into services (service_id,payed,extracharges) values ( 3,true,20.50);
insert into services (service_id,payed,extracharges) values ( 3,false,78.80);
insert into services (service_id,payed,extracharges) values ( 4,false,80.50);