php - 从 JOIN 查询检索行时缺少列数据

标签 php mysql join

在 php 和 mysql 中,我对多个表使用连接查询。每个表都有字段名称title。我想从每个 JOINed 表中获取 title 的值,但是当我使用 php 检索结果集的每一行时,我只获得 title 的最后一个值,这这是我的查询。

SELECT UC.user_id, 
       UC.courses_id, 
       UC.semester_id, 
       UC.batch_id, 
       UC.department_id, 
       U.title,
       U.firstname,
       U.lastname,
       B.title , 
       CO.title, 
       SE.title, 
       DEP.title
  FROM tbl_user_courses AS UC
 INNER JOIN tbl_user AS U ON UC.user_id = U.id
 INNER JOIN tbl_batch AS B ON UC.user_id = B.id
 INNER JOIN tbl_courses AS CO ON UC.user_id = CO.id
 INNER JOIN tbl_semester AS SE ON UC.user_id = SE.id
 INNER JOIN tbl_departments AS DEP ON UC.user_id = DEP.id
 where UC.trash=0 
 order by UC.user_id desc

它的php代码

<?php
  if($rec)
    foreach( $rec as $value => $k){
?>


<?php echo $k['title']; 
<?php echo $k['title'];?>

<?php echo $k['title'];?>   
<?php echo $k['title'];?>   
}

现在我怎样才能获得每个表标题及其字段名称。

最佳答案

您可以通过添加 AS <alias> 为字段指定别名。字段后。

SELECT UC.user_id, 
       UC.courses_id, 
       UC.semester_id, 
       UC.batch_id, 
       UC.department_id, 
       U.title as user_title,
       U.firstname,
       U.lastname,
       B.title AS batch_title, 
       CO.title AS course_title, 
       SE.title AS semester_title, 
       DEP.title AS department_title
  FROM tbl_user_courses AS UC
 INNER JOIN tbl_user AS U ON UC.user_id = U.id
 INNER JOIN tbl_batch AS B ON UC.user_id = B.id
 INNER JOIN tbl_courses AS CO ON UC.user_id = CO.id
 INNER JOIN tbl_semester AS SE ON UC.user_id = SE.id
 INNER JOIN tbl_departments AS DEP ON UC.user_id = DEP.id
 where UC.trash=0 
 order by UC.user_id desc

如果运行此查询,则可以使用别名而不是字段名称,因此请使用 $k['department_title']获取部门名称。

我认为“标题”用于表示部门或类(class)的名称是一个相当奇怪的术语,但如果它们都被命名为“名称”,您将再次遇到同样的问题。 :D

顺便说一句,您可以使用命名约定来减少这样的冲突。就像你有 department_id (不仅仅是 id )您还可以使用 department_name或者只是 department 。不过,了解别名还是有好处的,因为您迟早会需要它们。

关于php - 从 JOIN 查询检索行时缺少列数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28266074/

相关文章:

php - SUM 函数在 MYSQL 存储过程中不起作用?

php - 从远程数据库提供页面

php - 不更新 SQL 数据库

php - 队列 Redis 不会在 Laravel Forge 上被触发

mysql - 如果 MySQL 中存在列,则删除行

python - webpy db 选择查询中的问题

mysql - 自内连接获取单条记录

mysql - 在 MySQL 中存储基因表达数据——需要联结表吗?

mysql - 需要有关 4 个表的 SQL 查询的帮助

javascript - 使用日历库 codeigniter : Issue with Previous Button 显示 3 个月的日历,并在顶部显示上一个和下一个箭头