Mysql全选时FK获取实际值

Mysql Obtaining actual value through FK when Selecting all rows

我需要 select * FROM sections 并获取每一行的列值以填充 JTable。我的问题是 部分 table 上的 adviserId 专栏是 INT

而且因为我得到的是每一行每一列的结果集,所以我不能发出 WHERE 子句。我想到了子查询,但由于 Id 每一行都不同,因此无法在 WHERE 子句上提供预先确定的 Id

所以如果我 运行 我的存储过程,我得到的只是 adviserIdint 值,而不是老师的名字。

我有教师部门 table.

老师

id PK INT
lastName 
firstName 
middleName 
isAdviser 
status 

栏目

id PK
name 
adviserId FK-- REFERENCING `id` column ON teacher table

最好的方法是什么?希望能帮到你。

谢谢。

++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++ 我根据大家的建议创建了最终的存储过程。 (再次感谢大家。)

CREATE DEFINER=`root`@`localhost` PROCEDURE `getAllSectionsInfo`()
BEGIN
    SELECT 
    s.`name` AS `Section Name`,
    s.`session` AS `Session`,
    CONCAT(t.lastName,',',t.firstName,' ',t.middleName) AS Adviser,
    s.yearLevel AS `Year Level`,
    CONCAT(syStart,'-',syEnd) AS SchoolYear

    FROM sections s 
    INNER JOIN 
    teacher t on s.adviserId = t.id;
END

是的,我也这么认为,一个简单的 inner join 就可以完成您的工作。试试下面的例子..

create table JTable as select T.id as Tid,T.lastName,T.firstName,T.middleName,T.isAdviser,T.status,S.id as Sid,S.name,S.adviserId
from Sections as S
inner join Teachers as T on T.id = S.adviserId

您可以在此处申请left join以确保您拥有部门 table的所有记录或与教师 数据或空数据。 因此,现在 JTable 将包含您放入选择列表中的所有列。

下面是数据库数据选择的解决方案

SELECT * FROM sections s INNER JOIN teacher on s.adviserId = t.id