首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql如何获取子查询的列名?

问Mysql如何获取子查询的列名?
EN

Stack Overflow用户
提问于 2016-10-08 17:50:31
回答 1查看 369关注 0票数 0

假设我有以下查询:

代码语言:javascript
复制
SELECT
    c.id AS 'course_id',u.id as 'user_id',c.round,u.first_name as name,u.last_name as family_name,u.`father_name`,u.`tazkera_id` as tazkira,c.`no` as class_ID,tc.province,tc.village,tl.id as training_provider_id,
    CASE c.`shift`
        WHEN 1 THEN 'Morning'
        WHEN 2 THEN 'Afternoon'
    END as shift,
    c.`start_date`as start_date,
    sa.participant_id,
    DATE_FORMAT(ca.`date`,'%Y-%m-%d') as attendence,
    CASE sa.`precence` 
        WHEN 0 THEN 'A' 
        WHEN 1 THEN 'P' 
    END as attendence_status 
FROM `users` AS u
LEFT JOIN `provinces` as pu On pu.`province_code` = u.`province_code`
LEFT JOIN `districts` as du on du.`district_code` = u.`district_code`

LEFT JOIN `course_user` as cu ON cu.`user_id` = u.id AND cu.`relation_type` = 1
LEFT JOIN `courses` AS c On c.id = cu.`course_id`


LEFT JOIN `training_centers` as tc On tc.id = c.`training_center_id`
LEFT JOIN `training_providers` AS tl ON tl.id = tc.`training_provider_id`
/*** Training location **/
LEFT JOIN `provinces` as pt On pt.`province_code` = tc.`province`
LEFT JOIN `districts` as dt on dt.`district_code` = tc.`district`
LEFT JOIN `course_attendances` as ca ON ca.`course_id` = c.`id`
LEFT JOIN `student_attendances` as sa ON sa.`course_attendance_id` = ca.`id`

WHERE c.id IS NOT NULL AND sa.`participant_id` = u.id
GROUP BY sa.`participant_id`,ca.date order by u.id,ca.date

我想用mysql获取上述查询的列名。当然,使用php我们可以做到这一点,但我的问题是,如何使用mysql查询来做到这一点?有可能吗?

EN

回答 1

Stack Overflow用户

发布于 2016-10-08 18:43:53

MySQL仅仅是一个数据库系统。你告诉它要选择什么,它就会这样做。在您的示例中,告诉它选择courses.id并将其命名为course_id,依此类推。列名在结果中是隐式的。它的工作原理是这样的:您的应用程序将查询发送到MySQL;MySQL对其进行检查,并告诉您是否可以。您的应用程序要求提供列;MySQL会告诉您列的名称和类型。您的应用程序请求行;MySQL将其发送。

通常,你使用的应用程序会自动完成所有这些操作,比如phpMyAdmin。而且,当您自己编写这样的应用程序时,语言通常对您隐藏了所有这些(比如Java framework或.NET)。当然,您也可以明确地询问列名和类型,例如在PHP中:

代码语言:javascript
复制
mysqli_fetch_field_direct($result, $column_index)

通过简单地搜索"MySQL“++”列名“,您可能会找到很多关于如何做到这一点的信息。

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

https://stackoverflow.com/questions/39930986

复制
相关文章

相似问题

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