1
create table "users"(
  "id"        SERIAL PRIMARY KEY NOT NULL,
  "full_name" varchar(100) NOT NULL,
  "role"      integer NOT NULL DEFAULT 0,
  "email"     varchar(100) NOT NULL
);

create table "devices"(
  "id" SERIAL PRIMARY KEY NOT NULL,
  "brand_name" varchar(20) NOT NULL
);

create table "users_and_devices"(
    "user_id" integer NOT NULL,
    "device_id" integer NOT NULL,
    foreign key (user_id) references users(id),
    foreign key (device_id) references devices(id)
);

我怎样才能得到brand_name属于的所有设备user 1?我应该在user_iddevice_id中添加索引users_and_devices吗?

谢谢你。

4

2 回答 2

1

user_id 1 拥有的所有品牌,消除重复:

select distinct d.brand_name
from users_and_devices ud
inner join devices d on ud.device_id = d.id
where ud.user_id = 1
于 2013-04-23T18:26:47.690 回答
1

您所要做的就是在 devices 和 users_and_devices 表之间进行简单的连接。你试过吗?

select brand_name 
from devices d
left join users_and_devices ud on (ud.device_id=d.id)
where ud.user_id=1

是的,我会在 user_id 和 device_id 上放置一个索引,因为您将要在表中查询这些特定列。

于 2013-04-23T18:26:50.607 回答