-1

我正在使用 BDS 2006、MySQL DB(用于连接的 MyDAC 组件),并且DBGrid我的表单上有一个组件,它显示我的 DB 表中的记录。

现在我需要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

目前我有 2DBGrid个用于 e_details,另一个用于 e_salary

是否可以只有 1 个 DBGrid 显示两个表中的值?或者我必须单独显示 2 个DBGrid

如果可能的话,我该怎么做

PS-视图中要添加更多列,并且两个表的行数相同

提前致谢

4

2 回答 2

2
  1. DBGrid显示数据集数据。数据可能是某些 SQL 查询执行的结果。DBGridTDataSet并且TDataSource不要关心 SQL 查询是什么。单表SELECT、带连接的多表SELECT、存储过程调用或SHOW命令。所以,是的 - 您可以使用 1 个 DBGrid 来显示您SELECT加入 2 个表的结果集。
  2. 如果两个表的行数相同e_id,那么两个表的主键是主键,那么为什么不拥有一个包含两个表的列的表呢?此外,如果您需要编辑数据集数据,则更新两个表的列可能会出现问题。这可能是拥有单张桌子的另一个论据。
  3. 虽然您可以使用WHERE e_details.e_id=e_salary.e_id而不是JOIN e_salary ON e_details.e_id=e_salary.e_id. JOIN 是首选,因为 DBMS 更明确地了解您的意图,并且对其他人来说更具可读性。
于 2011-10-17T10:14:53.457 回答
-1

DBgrid 可能不是您需要的组件。关注 TTreeView

http://delphi.about.com/od/vclusing/l/aa060603a.htm

于 2011-10-17T10:12:09.857 回答