我正在使用BDS 2006,MySQL DB(用于连接的MyDAC组件),我的表单上有一个DBGrid
组件,它显示了我的数据库表中的记录。
现在我需要JOIN
两个表格,并在我的DBGrid
我应该得到的结果视图是查询的结果
SELECT e_salary.e_basic,e_details.e_name
FROM e_details
INNER JOIN e_salary
ON e_details.e_id=e_salary.e_id;
我搜索时还有一个选项可以选择
SELECT
e_salary.e_basic,e_details.e_name
FROM
e_details, e_salary
WHERE
e_details.e_id=e_salary.e_id;
e_details,e_salary是我的两个表,e_id是我的PRIMARY KEY
目前我有2 DBGrid
一个用于e_details而另一个用于e_salary
是否可以只有1个DBGrid显示两个表中的值?或者我必须显示2个单独的DBGrid
?
如果可能的话,我该怎么做呢
P.S.-在视图中添加了更多列,两个表具有相同的行数
提前致谢
答案 0 :(得分:2)
DBGrid
显示数据集数据。数据可能是某些SQL查询执行的结果。 DBGrid
,TDataSet
和TDataSource
不知道SQL查询是什么。单表SELECT
,带有连接的多表SELECT
,存储过程调用或SHOW
命令。所以,是的 - 您可以使用1个DBGrid来显示加入2个表的SELECT
的结果集。e_id
是两个表的主键,那么为什么不包含单个表,包含两个表的列?此外,如果您需要编辑数据集数据,则更新两个表的列可能会出现问题。这可能是单表的另一个论点。WHERE e_details.e_id=e_salary.e_id
代替JOIN e_salary ON e_details.e_id=e_salary.e_id
。 JOIN是首选,因为DBMS更明确地获取您的意图,并且对其他人更具可读性。答案 1 :(得分:-1)
DBgrid可能不是您需要的组件。 关注TTreeView