MySQL: użyj wartości z innej tabeli jako aliasu kolumny?
Mamy jedną naprawdę fajną tabelę i staram się uzyskać opisowy wynik.
Ta tabela przechowuje ściśle powiązany, ale odmienny zbiór typów danych, a znaczące „nazwy” kolumn są przechowywane w osobnej tabeli. Myślę, że łatwiej będzie pokazać niż wyjaśnić.
Przykład uproszczony i abstrakcyjny:
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');
Początkowo spodziewałem się, że umieściłem znaczące nazwy w kolumnach logiki biznesowej (w php), ale gdybym mógł po prostu przekonać SQL do tego jeszcze przed naszym programemwidzi to byłby zestaw wynikówniesamowite!
CEL:
Aby to zilustrować (wiem, że to nie zadziała), myślałem o czymś w rodzaju:
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
A to by powróciło:
----------------------------
| in | out | stationary |
----------------------------
| abc | def | ghk |
| NULL | NULL | mnop |
----------------------------
STRESZCZENIE:
Jak przejść do ustawiania aliasów nawartości innego stołu?
Nie chcemy określać nazwy aliasu, chcemy, aby alias został ustawiony przez wartość pola, do którego istnieje odwołanie. Czy to jest możliwe?