delphi DBGrid显示JOIN结果

时间:2011-10-17 09:45:57

标签: mysql delphi inner-join dbgrid

我正在使用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.-在视图中添加了更多列,两个表具有相同的行数

提前致谢

2 个答案:

答案 0 :(得分:2)

  1. DBGrid显示数据集数据。数据可能是某些SQL查询执行的结果。 DBGridTDataSetTDataSource不知道SQL查询是什么。单表SELECT,带有连接的多表SELECT,存储过程调用或SHOW命令。所以,是的 - 您可以使用1个DBGrid来显示加入2个表的SELECT的结果集。
  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更明确地获取您的意图,并且对其他人更具可读性。

答案 1 :(得分:-1)

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

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