動的クエリ文字列

ある特定の列の値に基づいてfrom句に動的コンテンツを追加したい。 出来ますか? 例えば、

 SELECT BILL.BILL_NO AS BILLNO,
        IF(BILL.PATIENT_ID IS NULL,"CUS.CUSTOMERNAME AS NAME","PAT.PATIENTNAME AS NAME")
 FROM
        BILL_PATIENT_BILL AS BILL 
        LEFT JOIN IF(BILL.PATIENT_ID IS NULL," RT_TICKET_CUSTOMER AS CUS ON BILL.CUSTOMER_ID=CUS.ID"," RT_TICKET_PATIENT AS PAT ON BILL.PATIENT_ID=PAT.ID")

しかし、このクエリは機能していません。

ここに

BILL_PATIENT_BILL table is a common table.
It can have either PATIENT_ID or CUSTOMER_ID. If a particular record has PATIENT_ID i want PATIENTNAME in RT_TICKET_PATIENT as NAME OtherWise it will hold CUSTOMER_ID. If it is i want CUSTOMERNAME as NAME.

ここにI m sure That BILL_PATIENT_BILL must have either PATIENT_ID or CUSTOMER_ID. Can anyone help me?

0

1 答え

また、文字列からクエリを構築する代わりに、 IF()を使用して適切な値を選択することもできます。

 SELECT 
        BILL.BILL_NO AS BILLNO,
        IF( BILL.PATIENT_ID IS NULL, cus.CUSTOMERNAME, pat.PATIENTNAME ) AS NAME
 FROM
        BILL_PATIENT_BILL AS BILL 
 LEFT JOIN RT_TICKET_CUSTOMER cus ON BILL.CUSTOMER_ID = cus.ID
 LEFT JOIN RT_TICKET_PATIENT pat ON BILL.PATIENT_ID = pat.ID

しかし、文字列と EXECUTE からステートメントを PREPARE することも可能ですが、この手法はSQLインジェクションになりがちです。

read here: Is it possible to execute a string in MySQL?

1
追加された
ありがとうカイイ。結果が得られました。
追加された 著者 Sangeetha Krishnan,