Mysql全选时FK获取实际值
Mysql Obtaining actual value through FK when Selecting all rows
我需要 select * FROM sections
并获取每一行的列值以填充 JTable
。我的问题是 部分 table 上的 adviserId
专栏是 INT
而且因为我得到的是每一行每一列的结果集,所以我不能发出 WHERE
子句。我想到了子查询,但由于 Id
每一行都不同,因此无法在 WHERE
子句上提供预先确定的 Id
。
所以如果我 运行 我的存储过程,我得到的只是 adviserId
的 int
值,而不是老师的名字。
我有教师和部门 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
我需要 select * FROM sections
并获取每一行的列值以填充 JTable
。我的问题是 部分 table 上的 adviserId
专栏是 INT
而且因为我得到的是每一行每一列的结果集,所以我不能发出 WHERE
子句。我想到了子查询,但由于 Id
每一行都不同,因此无法在 WHERE
子句上提供预先确定的 Id
。
所以如果我 运行 我的存储过程,我得到的只是 adviserId
的 int
值,而不是老师的名字。
我有教师和部门 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