У нас есть эта таблица, которая действительно напуганна, и я пытаюсь получить описательный результат.
В этой таблице хранится тесно связанная, но разрозненная коллекция типов данных, а значимые столбцы «имена» хранятся в отдельной таблице. Думаю, будет легче показать, чем объяснить.MySQL: использовать значение из другой таблицы в качестве псевдонима столбца?
Упрощенные и реферат Пример:
CREATE TABLE IF NOT EXISTS `something_obscure` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`obscure_type_id` tinyint(2) NOT NULL,
`segment1` varchar(92) DEFAULT NULL,
`segment2` varchar(92) DEFAULT NULL,
`segment3` varchar(92) DEFAULT NULL,
`datetime_created` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `something_obscure`
(`id`, `obscure_type_id`, `segment1`, `segment2`, `segment3`, `datetime_created`)
VALUES
('250', 1, '123', '456', '789', '2013-05-14 10:13:44'),
('251', 2, 'abc', 'def', 'ghk', NULL),
('252', 2, NULL, NULL, 'mnop', NULL);
CREATE TABLE IF NOT EXISTS `obscure_type` (
`id` tinyint(2) unsigned NOT NULL AUTO_INCREMENT,
`type` varchar(30) NOT NULL,
`description` varchar(92) DEFAULT NULL,
`segment1` varchar(92) DEFAULT NULL COMMENT 'a LABEL/NAME for the data found in Segment1 of the Obscure table',
`segment2` varchar(92) DEFAULT NULL,
`segment3` varchar(92) DEFAULT NULL,
`datetime_created` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO `obscure_type`
(`id`, `type`, `description`, `segment1`, `segment2`, `segment3`)
VALUES
(1, 'native', 'a descriptive description', 'best', 'worst', 'other'),
(2, 'alien', 'another descriptive desc', 'in', 'out', 'stationary');
Изначально я ожидал поставил значащие имена столбцов в бизнес-логике (в PHP), но если бы я мог просто получить SQL для обработки этого до нашей программы даже видит этот результирующий набор, который будет awesome!
ЦЕЛЬ:
Просто, чтобы показать (я знаю, что это не будет реально работать), я что-то думать, вроде как:
SELECT
data.segment1 AS type.segment1,
data.segment2 AS type.segment2,
data.segment3 AS type.segment3
FROM something_obscure AS data
JOIN pobscure_type AS type
ON data.obscure_type_id = type.id
WHERE data.obscure_type_id = 2
И возвращающие бы:
----------------------------
| in | out | stationary |
----------------------------
| abc | def | ghk |
| NULL | NULL | mnop |
----------------------------
РЕЗЮМЕ:
Как можно использовать псевдонимы настройки для значения другой таблицы?
Мы не хотим указывать имя псевдонима, мы хотим, чтобы имя псевдонима было задано значением поля, на которое указывает ссылка. Это возможно?
Если запрос для 'obscure_type_id = 1' псевдонима для' segment1' будет " лучше всего ", и если запрос для' obscure_type_id = 2', то псевдоним wo uld be "in" ... похоже, что он будет взрываться, хотя, если запрос когда-либо выполнялся для нескольких идентификаторов типа ... независимо от того, возможно ли это? – mOrloff