2016-06-20 3 views
2

Ich bin nicht sicher, dass dies nur mit SQL ... jede Hilfe geschätzt wird möglich:MYSQL: Auswahl Wert in der Spalte, wo Spaltenname auf einer separaten Tabelle definiert ist

Ich versuche, einen Wert abzurufen in einer Spalte in Tabelle B (tblProduct). Der Spaltenname ist tatsächlich in der Referenztabelle A (tblConfig_Group) definiert.

Also, im Wesentlichen, ich bin angesichts der tblConfig_Group.groupCode und tblProduct.VCI Werte

ich müssen den Wert in der entsprechenden Spalte in tblProduct in dbColumnUK gesetzt abzurufen.

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

Code bitte .... – Jocelyn

+0

Hallo Jocelyn Der SQL ist nicht annähernd eine Lösung. Ich muss verstehen, wenn eine Spalte durch variable Auswahl ist auch technisch möglich, zuerst ... ' SELECT cg.dbColumnUK, p.VCI, p.'dbColumnUK' VON tblConfig_Group cg, tblProduct p WHERE cg.groupCode = B UND cg.dbColumnUK = p.dbColumnUK UND p.VCI = 'vci2'; ' – nads

+0

yeah Ich denke, ich kann das tun. – Drew

Antwort

2

Sie eine Abfrage wie die folgende verwenden:

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

Danke Giorgos, das ist eine nette Lösung, aber ich fürchte, die Liste der Gruppen wird von den Endbenutzern so nicht in der Lage, dies hart codiert zu haben. – nads

+0

@nads In diesem Fall würde ich vorschlagen, das Schema Ihrer Datenbank neu zu entwerfen. –

+0

Danke Giorgos, notiert. – nads

Verwandte Themen