How can I select the columns to be returned by a lookup truth table? my data:
| nam | X | Y | | Bob | 2 | 5 | | Jan | 1 | 6 |
the lookup table
| prop| SHOW | | nam | true | | X | false| | Y | true |
someting like SELECT from data (columns which have "true" in lookup)
resulting in:
| nam | Y | | Bob | 5 | | Jan | 6 |
Advertisement
Answer
use a pivot table
Schema (MySQL v5.7)
CREATE TABLE tab1 ( `nam` VARCHAR(3), `X` INTEGER, `Y` INTEGER ); INSERT INTO tab1 (`nam`, `X`, `Y`) VALUES ('Bob', '2', '5'), ('Jan', '1', '6'); CREATE TABLE tab2 ( `prop` VARCHAR(3), `SHOW` VARCHAR(5) ); INSERT INTO tab2 (`prop`, `SHOW`) VALUES ('nam', 'true'), ('X', 'false'), ('Y', 'true');
Query #1
SELECT CONCAT ('SELECT ',GROUP_CONCAT(CONCAT('`',prop,'`')),' FROM tab1;') INTO @sql FROM tab2 WHERE `SHOW` = 'true';
There are no results to be displayed.
Query #2
PREPARE stmt FROM @sql;
There are no results to be displayed.
Query #3
EXECUTE stmt; | nam | Y | | --- | --- | | Bob | 5 | | Jan | 6 |
There are no results to be displayed.