2012-02-06 8 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_ID, либо CUSTOMER_ID. Если конкретная запись имеет PATIENT_ID, я хочу PATIENTNAME в RT_TICKET_PATIENT как ИМЯ OtherWise будет держать CUSTOMER_ID. Если это я хочу CUSTOMERNAME как NAME.

Здесь я уверен, что BILL_PATIENT_BILL должен иметь либо PATIENT_ID, либо CUSTOMER_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

Спасибо и Кай. Получил результат. –

Смежные вопросы