Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:使用另一个表中的值作为列别名?_Mysql_Sql_Alias - Fatal编程技术网

MySQL:使用另一个表中的值作为列别名?

MySQL:使用另一个表中的值作为列别名?,mysql,sql,alias,Mysql,Sql,Alias,我们有一个非常时髦的表格,我正试图从中得到一个描述性的结果。 此表存储紧密相关但完全不同的数据类型集合,有意义的列“名称”存储在单独的表中。我认为展示比解释更容易 一个简化而抽象的例子: CREATE TABLE IF NOT EXISTS `something_obscure` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `obscure_type_id` tinyint(2) NOT NULL, `s

我们有一个非常时髦的表格,我正试图从中得到一个描述性的结果。
此表存储紧密相关但完全不同的数据类型集合,有意义的列“名称”存储在单独的表中。我认为展示比解释更容易

一个简化而抽象的例子:

 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来处理,那就太棒了

目标:
我只是想说明一下(我知道这实际上行不通),我的想法有点像:

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       |
----------------------------
摘要:
如何为另一个表的值设置别名
我们不希望指定别名,我们希望通过引用字段的值设置别名。可能吗?

您是否尝试将别名包装到backqoutes中

SELECT 
  data.segment1 AS `type.segment1`,
  data.segment2 AS `type.segment2`,
  data.segment3 AS `type.segment3`
FROM something_obscure AS data
JOIN obscure_type AS type
ON data.obscure_type_id = type.id

您是否尝试将别名包装到backqoutes中

SELECT 
  data.segment1 AS `type.segment1`,
  data.segment2 AS `type.segment2`,
  data.segment3 AS `type.segment3`
FROM something_obscure AS data
JOIN obscure_type AS type
ON data.obscure_type_id = type.id

在别名周围使用单引号

SELECT 
  data.segment1 AS 'segment1',
  data.segment2 AS'segment2',
  data.segment3 AS 'segment3'
FROM something_obscure AS data
JOIN obscure_type AS type
ON data.obscure_type_id = type.id


在别名周围使用单引号

SELECT 
  data.segment1 AS 'segment1',
  data.segment2 AS'segment2',
  data.segment3 AS 'segment3'
FROM something_obscure AS data
JOIN obscure_type AS type
ON data.obscure_type_id = type.id


你应该使用“反勾号”,而不是单引号。@dar7yl我写的是“反勾号”,但我看到其他答案是用反勾号发布的,所以我更改了我的答案:)你应该使用“反勾号”,不是单引号。@dar7yl我写的是回帖,但我看到其他答案是用回帖贴出来的,所以我改变了我的答案:)我想我可能有点不清楚。我会在我的帖子中添加一条评论来澄清。我想我可能有点不清楚。我将在我的帖子中添加一条评论来澄清。如果查询
晦涩类型\u id=1
段1
的别名将是“最佳”,如果查询
晦涩类型\u id=2
,则别名将是“in”。。。不过,如果一个查询针对多个类型id运行,它似乎会内爆。。。不管怎样,这是可能的吗?如果查询
隐藏类型\u id=1
段1
的别名将是“最佳”,如果查询
隐藏类型\u id=2
,则别名将是“in”。。。不过,如果一个查询针对多个类型id运行,它似乎会内爆。。。不管怎样,这有可能吗?