如何在 MySQL 查询中返回相关字段而不是参考号
Posted
技术标签:
【中文标题】如何在 MySQL 查询中返回相关字段而不是参考号【英文标题】:How to return related field instead of reference number in a MySQL query 【发布时间】:2012-03-29 09:58:39 【问题描述】:我有一个用于许多表的通用 mysql 语句,它只检索单个表的所有数据:
$table = "profiles";//set static for example
$result = mysql_query("SELECT * FROM `$table`");
我希望结果显示来自position
的文本,而不是job_id
。
如果我仍然希望我的查询保持通用,并且可能有多个字段引用到我希望相关文本而不是 id 的其他表,我该怎么做?
mysql> show columns from profiles;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| staff_id | int(11) | NO | PRI | NULL | auto_increment |
| job_id | int(11) | NO | | NULL | |
| name | varchar(100) | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
mysql> show columns from job_positions
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| job_id | int(11) | NO | PRI | NULL | auto_increment |
| position | varchar(100) | NO | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
我可以在这些字段上设置某种关系,然后使用查询发出命令以返回相关文本而不是 id 吗?
【问题讨论】:
听起来你想要一个好的 php ORM 库:***.com/questions/108699/good-php-orm-library 【参考方案1】:你可以创建一个视图:
create or replace view info as
select p.job_id as job_id, p.name as name, j.position as position
from profile as p, job_position as j where p.job_id=j.job_id
那么您仍然可以使用您的查询
$table = "info";
$result = mysql_query("SELECT * FROM `$table`");
【讨论】:
这看起来很有希望,但是没有视图的表呢?有没有办法检查表上的视图,如果有,运行查询 where $table = $tablename."_view" else $table = $tablename? 通用 mysql 语句的要点是 $table 是从用户操作自动分配的,例如他们单击配置文件按钮,以便将“配置文件”分配为 $table。我无法将其更改为“people_view”,因为这会破坏程序中的其他内容。因此,我需要在运行 SQL 之前对其进行更改。因此,如果我调用我创建的视图'profile_view',我可以使用 $table.'_view' 但是使用此通用语句的其他查询将失败,因为没有为它们创建视图,因此没有 $table.'_view'以上是关于如何在 MySQL 查询中返回相关字段而不是参考号的主要内容,如果未能解决你的问题,请参考以下文章