0

次のフィールドを持つテーブルを作成する必要があるシナリオがあります

部局名、省庁名、ドメイン名、コーディネーター名、コーディネーターメール

これで、各 department_name に対して、複数の coordinator_name とそれに対応する複数の coordinator_email が存在する可能性があります。

1 つのテーブル (部門) でこれを行うことはできません。これは、2 つのコーディネーター名とそのコーディネーターの電子メールを mysql の 1 つの行に格納できないためです。

だから私は部門名(主キー)、省庁名、ドメイン名を持つ1つのテーブル(コーディネーター)を作成し、部門名(主キー)、コーディネーター名、部門(部門名)への外部キー参照を持つcoordinator_emailを持つ2番目のテーブルを作成することを計画しました

データが両方のテーブルに一度に挿入されるように、insertステートメントを使用するにはどうすればよいですか。同様に、削除ステートメントと更新ステートメントを使用するにはどうすればよいですか...

助けてください...ありがとう...

4

4 に答える 4

0
  1. 1つのテーブルを使用できます

部門A-省-ドメイン-コーディネーターA-コーディネーターEメールA

部門A-省-ドメイン-コーディネーターB-コーディネーターEメールB

部門A-省-ドメイン-コーディネーターC-コーディネーターEメールC

部門B-省-ドメイン-コーディネーターA-コーディネーターEメールA

部門だけが必要な場合は、コーディネーターの情報を無視して、部門ごとにグループ化しますか?特に2つのテーブルが必要な場合を除きますか?

  1. TRIGGERSを使用してこれを実現できます。トリガーは、INSERT、UPDATE、DELETEが実行されるたびに発生します。

  2. 2つの異なるテーブルに分割します

コーディネーター:id、name、email、departmentId(Departments.idへの外部キー)部門:id、name、ministry、domain

次に、外部キーが更新と削除を処理します(部門が削除された場合はすべてのコーディネーターが削除されます)

- 編集

次に、最初に部門をループします。

SELECT DISTINCT(department_name)FROM your_table

その場合、2番目のループは各部門のすべてのコーディネーターを表示することです

SELECT * FROM your_table WHERE department_name =''

于 2012-12-14T09:19:21.913 に答える
0

あなたの質問については不明です。テーブル Coordinator は department_name を主キーとして持つと書きました。これはどのように可能ですか?コーディネーター テーブルの外部キーとして department_name を使用するべきではありませんか? あなたの質問を誤解していたらごめんなさい

于 2012-12-14T09:13:57.957 に答える
0

2つのテーブルを使用する場合テーブル「部門」列:ID、名前、省、ドメイン

テーブル「コーディネーター」列: id、name、email、departmentId

Department と Coordinator テーブルの間の関係を仮定します。以下のクエリは、部門名に基づいてレコードを返す必要があります

select * from Coordinator 
     join Department on Coordinator.departmentId = Department.Id
Where Department.name = '' --- pass any name you want in single quotes

これがうまくいくかどうか教えてください

于 2012-12-14T11:51:00.133 に答える
0

まず、主キーに名前を使用しないでください。代わりに ID をキーとして使用してください。あなたの部門を取り、ID(自動インクリメント)を作成し、値を作成しないようにして、それ自体が行われるようにします。次に、その部門名に関連付けられた一意の ID を生成します。この一意の ID を使用して、必要に応じて後で呼び出すことができます。ただし、他の名前をこの部門に関連付けるには、この ID が必要です。一意の ID を作成した 1 つのテーブルに部門名を保持し、使用される値ごとにこの ID を持つこれらの名前を持つ別のテーブルを用意します。これを行うには、複数のクエリが必要です。


部門 テーブル: id(primary|auto inc) uid dept_name

コーディネート。テーブル: id(primary|auto inc) uid(部門テーブルから) min_name coord_name coord_email

<?php
    mysql_query("
        insert into `dept` values(
            NULL,
            `$uid`,
            `$dept_name`
        )
    ");
    mysql_query("
        insert into `coord` values (
            NULL,
            `$uid`,
            `$coord_name`,
            `$coord_email`,
            `$ministry_name`
        )
    ");
?>

たぶん、これで解決しました。

于 2012-12-14T09:35:58.813 に答える