2016-04-26 30 views
1

私は、翌日の予定を持っている人のためにメンバーの電話番号を返そうとしている状況があります。問題は、データがデータベースに格納される方法です。 MEMBERSテーブルには、phone1、phone2、phone3、phone4の4つのフィールドがあり、phone1label、phone2label、phone3label、およびphone4labelの4つの追加フィールドがあります。ユーザーインターフェイスでは、ユーザーは電話番号を入力するとドロップダウンから4つのモバイルを特定することができます。したがって、phone#label = '4'の各MEMBERレコードのフィールドを取り戻す方法はありますか?例えば、John Doeはphone1label = '4'でphone1に自分の携帯電話番号を持ち、John Q Publicはphone2label = '4'でphone2に自分の携帯電話番号を持つかもしれません。SQL条件付きフィールドの取得

その後、私は次のクエリにこのロジックを追加する必要があります。

SELECT SCSERVICES.servicecode, 
     SCSERVICES.servicename, 
     SCSESSIONS.scheduleid, 
     SCSERVICES.servicetype, 
     SCSERVICECATEGORIES.servicecategory, 
     SCSCHEDULES.scheduledatefrom, 
     MEMBERS.lname, 
     MEMBERS.fname, 
     MEMBERS.phone1, 
     MEMBERS.phone2, 
     MEMBERS.phone3, 
     MEMBERS.phone4, 
     MEMBERS.phone1label, 
     MEMBERS.phone2label, 
     MEMBERS.phone3label, 
     MEMBERS.phone4label, 
     SCSCHEDULES.timestart, 
     SCSCHEDULES.schedulestatus 
FROM SCSESSIONS 
INNER JOIN SCSERVICES ON SCSESSIONS.serviceid = SCSERVICES.serviceid 
INNER JOIN SCSERVICECATEGORIES ON SCSERVICES.servicecategoryid = SCSERVICECATEGORIES.servicecategoryid 
INNER JOIN SCSCHEDULES ON SCSESSIONS.scheduleid = SCSCHEDULES.scheduleid 
INNER JOIN MEMBERS ON SCSCHEDULES.memid = MEMBERS.memid 
WHERE (SCSERVICECATEGORIES.servicecategory = 'Spa') 
    AND (SCSERVICES.siteid = '779') 
    AND (CAST(SCSCHEDULES.scheduledatefrom AS DATE) = '04-27-2016') 
    AND (SCSCHEDULES.schedulestatus = '1') 
+0

複数の携帯電話番号を持てますか? –

答えて

3

あなたはCASE声明使用することができます。電話番号はに正規化した場合、それはきれいになること

CASE WHEN phone1label = '4' THEN phone1 
    WHEN phone2label = '4' THEN phone2 
    WHEN phone3label = '4' THEN phone3 
    WHEN phone4label = '4' THEN phone4 
END AS MobilePhone 

は注意をレコードごとに複数のフィールドを持つ代わりに、別のテーブル。

+0

AWESOME!どうもありがとうございました!!!!私は電話番号の構成についてあなたに同意しますが、ボックスソフトウェアのカスタムレポートを作成することに取り組んでいます。 – Merlin

+0

@Merlinそれはうまくいった。レガシーソフトウェアについて理解する - ちょうど箱入りのソフトウェアを書くときのための提案をする:) –