SQL ВЫБРАТЬ из на основе таблицы истинности - PullRequest
1 голос
/ 02 августа 2020

Как я могу выбрать столбцы, которые будет возвращать справочная таблица поиска? мои данные:

| nam | X | Y |
| Bob | 2 | 5 |
| Jan | 1 | 6 |

таблица поиска

| prop| SHOW |
| nam | true |
|  X  | false|
|  Y  | true |

что-то вроде SELECT from data (columns which have "true" in lookup) в результате:

| nam | Y |
| Bob | 5 |
| Jan | 6 |

1 Ответ

1 голос
/ 02 августа 2020

использовать сводную таблицу

Схема (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');

Запрос №1

SELECT CONCAT ('SELECT ',GROUP_CONCAT(CONCAT('`',prop,'`')),' FROM tab1;') 
       INTO @sql 
FROM tab2 WHERE `SHOW` = 'true';

Нет результатов для отображения.

Запрос # 2

PREPARE stmt FROM @sql;

Нет результатов для отображения.

Запрос №3

EXECUTE stmt;

| nam | Y   |
| --- | --- |
| Bob | 5   |
| Jan | 6   |

Нет результатов для отображения.

Просмотр в DB Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...