多对多关系,应该怎么设计数据库中的表和字段?

假设多个顾客购买了多种商品,把购买了商品1,商品3的所有顾客都显示出来。(只显示出顾客C才正确)我下面建立的这个表设计合理不合理? 根据商品查询出对应的顾客的sql怎么写?

第1个回答  2016-07-18
多对多,两个实体各建一张表,然后再建一张关系表。以你的这个为例,顾客一张表,商品一张表,顾客购买了什么商品建立一张购物表。追问

请问关系表的字段如何设计?

追答

顾客表(ID,顾客名称),商品表(ID,商品名称),关系表(ID,顾客ID,商品ID)

第2个回答  2016-07-18
select a.顾客 from a,b where a.id=b.顾客id and (d.商品='商品1' and d.商品='商品3')追问

请问D表是哪来的呀,D表的字段又是什么

追答

sorry,写错了,是b

追问

现在有5个用户,用户1买了商品1,商品2,商品3,用户2买了商品2,用户3买了商品3,用户4买了商品4,用户5买了商品1,商品2,商品3,

用一个sql语句把买了商品1和商品2还有商品3的用户显示出来,

追答

你的意思是不是既购买商品1又购买商品3的顾客,试试下面的
select a.顾客 from a,b where a.id in (select b.顾客id from b where b.商品='商品1' INTERSECT select b.顾客id from b where b.商品='商品3' )

相似回答