(COMPLEX)从表中获取不在另一个表中的项目

时间:2018-07-16 12:12:12

标签: sql psql

有问题的结构由5个表组成:

1。

  create_table "attendees", force: :cascade do |t|
    t.integer  "id",                     primary_key: true
    t.string   "email",                  null: false
    t.string   "first_name",             null: false
    t.string   "last_name",              null: false
    t.integer  "fly_in_id", null: false
  end

2。

  create_table "events", force: :cascade do |t|
    t.integer  "id",                     primary_key: true
    t.string   "title",                  null: false 
    t.string   "attendance_type",        default: "specific", null: false
    t.integer  "fly_in_id", null: false
  end

3。

  create_table "attendees_events", force: :cascade do |t|
    t.integer "attendee_id", null: false
    t.integer "event_id",    null: false
  end

这些在数据库中。现在,我还有两个额外的临时表,分别代表与会者和事件:

4。

  create_table "tmp_attendees", force: :cascade do |t|
    t.string   "email",                  null: false
    t.string   "first_name",             null: false
    t.string   "last_name",              null: false
    t.string   "title",                  null: false
  end

标题为与会者与tmp_event / event之间的链接

5。

  create_table "tmp_events", force: :cascade do |t|
    t.string   "title",                  null: false 
    t.string   "attendance_type",        default: "specific", null: false
    t.integer  "fly_in_id", null: false
  end

我需要的查询:对于每个tmp_event,所有在tmp_attendees中且未链接到数据库的参与者(attendees_events)(tmp事件对应于数据库中的事件100%)。

说明:参加者可以参加活动(在数据库中,此表由表与会者“ _参加者”中的每个参加者参加的活动表显示)

在tmp_attendees表中,在tmp_attendees标题中的title列所指示的事件中应该有与会者。我想检查数据库中是否为真。 (所以我知道是否必须创建这样的链接)。

条件:tmp_attendees通过电子邮件链接到与会者。 tmp_attendees通过标题链接到事件/ tmp_events。

我会很乐意提供任何必要的信息

0 个答案:

没有答案