0

放課後のアクティビティ スキーム データベースの 4 つのテーブル (Schedule、Activities、Children、および Parents) からデータを抽出する必要があります。

Schedule には、主キー、アクティビティへの参照、および子への参照が含まれています。

まず、選択したアクティビティのアクティビティ テーブルから ID を取得する必要があります (たとえば、「サッカー」を検索して、対応する ID を取得します)。次に、これを使用して、そのアクティビティを実行している各子供を Schedule テーブルで検索し、これらの詳細を表示する必要があります。Children テーブルの各エントリは、親への参照を保持します。最後に、この参照を抽出して、子の親の名前を表示できるようにする必要があります。

最終結果は次のようになります。

activity_id | child_name | parent_name

すべてのアドバイスは大歓迎です!:)

参考までに、ここに私のテーブルスキーマがあります:

<!--CREATE CHILD TABLE-->

CREATE TABLE Child (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    forename VARCHAR(30) NOT NULL,
    surname VARCHAR(30) NOT NULL,
    gender ENUM('male', 'female') NOT NULL,
    dob DATE NOT NULL,
    guardian INT NOT NULL,
)


<!--CREATE GUARDIAN TABLE-->

CREATE TABLE Guardian (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    title VARCHAR(5) NOT NULL,
    forename VARCHAR(30) NOT NULL,
    surname VARCHAR(30) NOT NULL,
    address1 VARCHAR(30) NOT NULL,
    address2 VARCHAR(30),
    town VARCHAR(30) NOT NULL,
    county VARCHAR(30),
    postcode VARCHAR(10) NOT NULL,
    telephone VARCHAR(20) NOT NULL
)


<!--CREATE ACTIVITY TABLE-->

CREATE TABLE Activity (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    day ENUM('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday') NOT NULL
)


<!--CREATE SCHEDULE TABLE-->

CREATE TABLE Schedule (
    id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
    child_id INT NOT NULL,
    activity_id INT NOT NULL,
    date DATE NOT NULL
)
4

1 に答える 1

1
SELECT Activity.id, Child.forename, Child.surname, Guardian.forename, Guardian.surname
  FROM Activity
  INNER JOIN Schedule ON Schedule.activity_id = Activity.id
  INNER JOIN Child ON Schedule.child_id = Child.id
  INNER JOIN Guardian ON Child.guardian_id = Guardian.id
  WHERE Activity.name = 'football'
于 2012-08-05T23:30:12.777 に答える