2016-06-20 2 views
2

Я не уверен, что это возможно только с SQL ... любая помощь будет оценена:MYSQL: Выбор значения в столбце, где имя столбца определяется на отдельной таблице

Я пытаюсь получить значение в столбце таблицы B (tblProduct). Имя столбца фактически определено в справочной таблице A (tblConfig_Group).

Так, по существу, я учитывая tblConfig_Group.groupCode и значения tblProduct.VCI

Мне нужно получить значение в соответствующем столбце в tblProduct установлен в dbColumnUK.

tblConfig_Group:

+----+-----------+-------------+ 
| id | groupCode | dbColumnUK | 
+----+-----------+-------------+ 
| 01 | A   | WindowGBP_A | 
| 02 | B   | WindowGBP_B | 
| 03 | C   | WindowGBP_C | 
| 04 | D   | WindowGBP_D | 
+----+-----------+-------------+ 

tblProduct:

+----+---------+-------------+-------------+-------------+-------------+ 
| id | VCI  | WindowGBP_A | WindowGBP_B | WindowGBP_C | WindowGBP_D | 
+----+---------+-------------+-------------+-------------+-------------+ 
| 01 | vci1 | 1   | 11   | 21   | 31   | 
| 02 | vci2 | 2   | 12   | 22   | 32   | 
| 03 | vci3 | 3   | 13   | 23   | 33   | 
| 04 | vci4 | 4   | 14   | 24   | 34   | 
+----+---------+-------------+-------------+-------------+-------------+ 
+0

Код пожалуйста .... – Jocelyn

+0

Hi Jocelyn sql нигде не находится рядом с решением. Я должен понять, если выбора столбца по переменной даже технически возможно первое ... ' ВЫБОР cg.dbColumnUK, p.VCI, p.'dbColumnUK' ОТ tblConfig_Group ХГ, tblProduct р ГДЕ cg.groupCode = В И cg.dbColumnUK = p.dbColumnUK И p.VCI = 'vci2'; ' – nads

+0

да, я думаю, что смогу это сделать. – Drew

ответ

2

Вы можете использовать запрос следующее:

SELECT CASE g.dbColumnUK 
      WHEN 'WindowGBP_A' THEN p.WindowGBP_A 
      WHEN 'WindowGBP_B' THEN p.WindowGBP_B 
      WHEN 'WindowGBP_C' THEN p.WindowGBP_C 
      WHEN 'WindowGBP_D' THEN p.WindowGBP_D 
     END AS col 
FROM tblProduct AS p 
CROSS JOIN (SELECT dbColumnUK FROM tblConfig_Group WHERE groupCode='A') AS g 
WHERE VCI = 'vci2' 

Demo here

+0

Спасибо Giorgos, это приятное решение, но я боюсь, что список групп будет увеличиваться у конечных пользователей, поэтому он не сможет получить эту жесткую кодировку. – nads

+0

@nads В этом случае я бы предложил рассмотреть возможность перепроектирования схемы вашей базы данных. –

+0

Спасибо Giorgos, отметил. – nads