2

だから私は次の構造を持つ2つのテーブルを手に入れました:

CREATE TABLE courses(
  id bigint not null auto_increment,
  title varchar(255) default '',
  primary key(id)
);

CREATE TABLE course_dates(
  id bigint not null auto_increment,
  course_id bigint,
  `date` date,
  key idx(course_id,date),
  primary key(id)
);

したがって、コースは最初のテーブルに保存され、コースの日付は2番目に保存されます(各コースには無制限の日付を設定できます)

1つのクエリを使用して一度にすべてのコース行(すべての日付を含む)を取得する必要があります

たとえば、そのようなデータを含むテーブルがある場合:

courses:
id | title
1  | course#1
2  | course#2

course_dates:
id | course_id | date
1  | 1         | 2012-12-25
2  | 1         | 2012-12-27
3  | 1         | 2012-12-31
4  | 2         | 2012-12-23
5  | 2         | 2012-12-30

次に、次のような結果行が必要です。

id | course_id | date       | title
1  | 1         | 2012-12-25 | course#1
2  | 1         | 2012-12-27 | course#1
3  | 1         | 2012-12-31 | course#1
4  | 2         | 2012-12-23 | course#2
5  | 2         | 2012-12-30 | course#2
4

1 に答える 1

4

簡単INNER JOINにできます。

SELECT  b.*, a.title
FROM    Courses a
        INNER JOIN Courses_Dates b
            ON a.id = b.Course_ID

結合について詳しくは、以下のリンクを参照してください。

于 2012-12-25T02:21:55.777 に答える