php - 一个表中的字段值可以用作 MySQL 查询中的列名吗?

标签 php mysql database database-design

假设我有两个表:

mysql> show columns from profiles;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      | NO   | PRI | NULL    | auto_increment | 
| full_name    | varchar(100) | NO   |     | NULL    |                | 
| date_of_birth| date         | NO   |     | NULL    |                | 
+--------------+--------------+------+-----+---------+----------------+
mysql> select * from profiles;
+-------------------+----------------+
| id  | full_name   | date_of_birth  |
+-----+-------------+----------------+
| 1   | John Smith  | 2000-01-01     |
| 2   | Anna Smith  | 1995-01-03     |
+-----+-------------+----------------+

mysql> show columns from language_en;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| column_name  | varchar(100) | NO   |     | NULL    |                | 
| label        | varchar(100) | NO   |     | NULL    |                | 
+--------------+--------------+------+-----+---------+----------------+
mysql> select * from language_en;
+-------------------+----------------+
| column_name      | label           |
+------------------+-----------------+
| id               | ID              |
| full_name        | Name            |
| date_of_birth    | DOB             |
+------------------+-----------------+

我想运行一个返回的查询:

+-------------------+----------------+
| ID  | Name        | DOB            |
+-----+-------------+----------------+
| 1   | John Smith  | 2000-01-01     |
| 2   | Anna Smith  | 1995-01-03     |
+-----+-------------+----------------+

这只是查询“SELECT * FROM profile”,但使用标签而不是列名。如何使用列名称而不是直接输入它们来执行此操作? 我知道我能做到:

SELECT id AS ID, full_name AS Name, date_of_birth AS DOB FROM profiles

但是我追求的是动态的东西,例如:

SELECT id AS language_en.label FROM profiles, language_en WHERE language_en.column_name = profiles.COLUMN_HEADER????

任何帮助将不胜感激

最佳答案

简短回答:我不这么认为。我认为 MySQL 的 AS 语句除了简单的文本标签之外不接受任何其他内容。

我认为将国际化放入数据库模式级别可能是错误的想法;通过在 Web 应用程序 (php) 层中保持翻译级别,您似乎可以让您的生活更加理智。毕竟,您的用户永远不需要直接查看列的名称,对吗?

关于php - 一个表中的字段值可以用作 MySQL 查询中的列名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9677457/

相关文章:

java - 如何使用java显示AbstractTableModel中的数据?

database - 在帐户管理系统中标记可能的相同用户

php - 将 APNS 推送通知发送到 PHP 中的多个设备 token 时出现问题

mysql - SQL 加入 NOT IN() 不起作用

Mysql - 使用 IN 运算符进行查询的最佳索引

php - 数据库的 ACL 实现

java - 在 mysql 查询中使用带有 like 关键字的 limit 给出 0 行

php - 从另一个表存储相关数据

php - 在 Laravel 中通过依赖注入(inject)解决抽象类的依赖

php - 非对象上的函数 bind_param() | PHP MySQL