私のデータベースの中でハイキング組織のクエリを作成する必要があります: - "Pohod na Triglav"という名前のハイキングに、70歳以上のハイカーが何人も参加しましたPlaninskodruštvoPlaninec組織によるものですか?MySQLハイキング組織のクエリのヘルプ
次のようにリレーショナルスキームは以下のとおりです。
CREATE TABLE Hikers(
IDHiker INTEGER NOT NULL,
Name VARCHAR(45) NOT NULL,
LastName VARCHAR(45) NOT NULL,
Sex ENUM('male', 'female'),
BirthDay DATE NOT NULL,
Phone VARCHAR(45)
);
//table for joining hikers and hikes (includes foreign keys)
CREATE TABLE Hiker_has_joined_the_Hike(
IDJoin INTEGER NOT NULL,
Hikers_IDHiker INTEGER NOT NULL,
Hikes_IDHike INTEGER NOT NULL
);
CREATE TABLE Hikes(
IDHike INTEGER NOT NULL,
Type_of_hike_IDType_of_hike INTEGER NOT NULL,
Name_Hike VARCHAR(45) NOT NULL,
No_of_available_hikers INTEGER NOT NULL,
Time_of_beginning DATETIME NOT NULL,
Time_of_end DATETIME NOT NULL
);
//table for joining organizations and hikes (includes foreign keys)
CREATE TABLE Organization_organizes_a_Hike(
IDOrganization INTEGER NOT NULL,
Organizations_IDOrganization INTEGER NOT NULL,
Hikes_IDHike INTEGER NOT NULL
);
CREATE TABLE Organizations(
IDOrganization INTEGER NOT NULL,
Title VARCHAR(45) NOT NULL,
Short_title VARCHAR(45),
E_mail VARCHAR(45) NOT NULL,
Phone VARCHAR(45) NOT NULL
);
これまでのところ、私はこれを得たが、それはそれらの2が表示されますが、一つだけがそこにする必要があります..:
SELECT DISTINCT COUNT(Hikers.IDHiker) AS No_of_joined_above_70
FROM Hikers, Hiker_has_joined_the_Hike, Hikes, Organization_organizes_a_Hike, Organizations
WHERE ((Hikers.IDHiker = Hiker_has_joined_the_Hike.Hikers_IDHiker) && (Hiker_has_joined_the_Hike.Hikes_IDHike = Hikes_IDHike) && (Hikes_IDHike = Organization_organizes_a_Hike.Hikes_IDHike) && (Organization_organizes_a_Hike.Organizations_IDOrganization = Organizations_IDOrganization) && ((YEAR(CURDATE()) - YEAR(Hikers.BirthDay))>70) && (Hikes.Name_Hike='Pohod na Triglav') && (Organizations.Title='Planinsko društvo Planinec'));
申し訳ありませんが、誰も..私がアップロードした質問は自分の言語で書かれていました。私は今、理解を深めて翻訳しました。作成したのと同じようにしました。
、私はあなたがしたいと思いますと言うだろう適切なJOINSを使用して開始します。それはおそらくあなたの問題を解決するでしょう(そしてあなたは安全にDISTINCT文も削除できます)。 – Sturgus
Sturgus、私は同じことを考えていましたが、参照整合性はほとんど見られません。 – tadamhicks
INNER JOINを使用し、クエリで正しいテーブル名とカラム名を指定してください –