首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果其他表中有相同的字段名称,那么获取所有数据的最佳方式是什么?

如果其他表中有相同的字段名称,那么获取所有数据的最佳方式是什么?
EN

Stack Overflow用户
提问于 2010-10-23 18:17:01
回答 3查看 50关注 0票数 1

我有下面的数据库。

如果我选择*并连接所有的表,desc和active将会混淆。

现在我可以写所有像omc_courses.desc,omc_trainer.desc等,但如果我有很多字段,这是不实用的。

所以我在想,我是否可以为同名的字段编写类似select *, omc_courses.desc AS course_desc, omc_trainer.desc AS trainer_desc,等的代码。

或者你有什么建议吗?

提前谢谢。

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS `omc_courses` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  ...
  `desc` varchar(255) DEFAULT NULL,
  `active` tinyint(1) NOT NULL DEFAULT '1',
  ...
  PRIMARY KEY (`id`)
) ... ;



CREATE TABLE IF NOT EXISTS `omc_trainer` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  ...
  `desc` varchar(255) DEFAULT NULL,
  `active` tinyint(1) NOT NULL DEFAULT '1',
   ...
  PRIMARY KEY (`id`)
) ... ;


CREATE TABLE IF NOT EXISTS `omc_anothertable` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  ...
  `desc` varchar(255) DEFAULT NULL,
  `active` tinyint(1) NOT NULL DEFAULT '1',
   ...
  PRIMARY KEY (`id`)
) ... ;
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-23 18:23:24

如果字段名不明确,就我所知,使用tablename.fieldname是唯一的方法。

您可以为表名创建简短的别名:

代码语言:javascript
复制
... FROM omc_courses AS c

然后通过该别名对字段名进行寻址:

代码语言:javascript
复制
select *, c.desc AS course_desc, t.desc AS trainer_desc,  ....

但我认为在缩写方面这是最好的。

票数 1
EN

Stack Overflow用户

发布于 2010-10-23 18:23:20

当然,最好的方法是如您所建议的那样,使用别名消除不同表中相同列名之间的歧义。

据我所知,我认为没有其他方法可以避免相同列名的这种歧义。

例如:使用别名-

代码语言:javascript
复制
select omc_c.*, omc_c.desc AS course_desc, omc_t.desc AS trainer_desc
from omc_courses as omc_c inner join omc_trainer as omc_t
票数 0
EN

Stack Overflow用户

发布于 2010-10-23 18:35:37

按照建议使用列别名,但我可能会创建一个视图,如下所示,这样我就不必再考虑它了:

代码语言:javascript
复制
drop view if exists omc_courses_view;

create view omc_courses_view as
select
 c.id as course_id,
 c.active as course_active,
 t.id as trainer_id,
 t.active as trainer_active,
 ...
from
 omc_courses c
inner join omc_trainer t on c.id = t.course_id
inner join ...

select * from omc_courses_view;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4003485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档