-1

私は BDS 2006、MySQL DB (接続に使用される MyDAC コンポーネント) を使用してDBGridおり、フォームに DB テーブルのレコードを表示するコンポーネントがあります。

今、私はJOIN2つのテーブルに結果を表示する必要があります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;

私が検索したときにそれを行うためのもう1つのオプションがあります

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 は私の 2 つのテーブルであり、e_id は私のPRIMARY KEY

現在、私は2DBGridつ持っています.1つはe_details用で、もう1つはe_salary用です

両方のテーブルの値を表示する DBGrid を 1 つだけ持つことは可能ですか? または、2つ別々に表示する必要がありますDBGridか?

可能であれば、どうすればいいですか

PS-ビューに追加する列がさらにあり、両方のテーブルの行数が同じです

前もって感謝します

4

2 に答える 2

2
  1. DBGridデータセット データを表示します。データは、何らかの SQL クエリの実行の結果である可能性があります。DBGridTDataSetありTDataSource、SQL クエリが何であったかは気にしません。単一テーブルSELECT、結合のある複数テーブルSELECT、ストアド プロシージャ コールまたはSHOWコマンド。そうです、1 つの DBGrid を使用して、SELECT結合した 2 つのテーブルの結果セットを表示できます。
  2. 両方のテーブルの行数が同じで、e_id両方のテーブルの主キーである場合、両方のテーブルの列を含む単一のテーブルを持たないのはなぜですか? また、データセット データを編集する必要がある場合、両方のテーブルの列を更新する際に問題が発生する可能性があります。そして、それは単一のテーブルを持つためのもう1つの引数かもしれません.
  3. WHERE e_details.e_id=e_salary.e_idの代わりに使用できますがJOIN e_salary ON e_details.e_id=e_salary.e_id。DBMS は意図をより明示的に取得し、他のユーザーにとってより読みやすいため、JOIN が推奨されます。
于 2011-10-17T10:14:53.457 に答える
-1

DBgrid はおそらく必要なコンポーネントではありません。TTreeView に注目してください

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

于 2011-10-17T10:12:09.857 に答える