2012-02-06 103 views
0

我想从第基于一个特定的列值,增加一些动态内容。 有可能吗? 例如,动态查询字符串

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表是一种常见的表。
它可以有PATIENT_IDCUSTOMER_ID。如果一个特定的记录有PATIENT_ID我想PATIENTNAMERT_TICKET_PATIENT作为NAME否则将举行CUSTOMER_ID。如果是我想CUSTOMERNAME作为名称。

这里我确定BILL_PATIENT_BILL必须有PATIENT_IDCUSTOMER_ID。 任何人都可以帮助我吗?

回答

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 

但是,它也有可能PREPARE从字符串的声明和EXECUTE,但这种技术很容易以SQL注入,我只能disadvise这样做:

在这里读到:Is it possible to execute a string in MySQL?

+0

感谢ü怪异。有结果。 – 2012-02-06 11:20:00