有三张表,
1.splb,(lb_id,lb_name 两个字段)
2.goods,(god_id,...,fk_lb)
3.中间表,(ID,商品ID和类别ID三个字段)考虑到,如果直接在splb里弄个外键,查询的时候,会有很多重复的数据(会多次出现同一个类别名称)出现。所以就建了个中间表,但我被关系搞晕了。
我要查商品表里面所有与商品类别名称相同的数据。SQL语句应该如何些。
或者表是否不应该这样建?我的思路正确么?请大家多多指教。
1.splb,(lb_id,lb_name 两个字段)
2.goods,(god_id,...,fk_lb)
3.中间表,(ID,商品ID和类别ID三个字段)考虑到,如果直接在splb里弄个外键,查询的时候,会有很多重复的数据(会多次出现同一个类别名称)出现。所以就建了个中间表,但我被关系搞晕了。
我要查商品表里面所有与商品类别名称相同的数据。SQL语句应该如何些。
或者表是否不应该这样建?我的思路正确么?请大家多多指教。
goods是商品表?splb是什么表,业务表?
每笔业务关联某个商品?
select goods.*,splb.lb_name
from goods left join 中间表 on goods.god_id=中间表.商品ID
left join splb on 中间表.类别ID=splb.lb_id
商品类型表(id , name , 价格 , 商品id , 其他字段)
goods(id , 商品类型id , 其他字段)
商品表(商品ID 商品名 商品属性列1 商品属性列2 .. 类别ID) primary key 商品ID foreign key 类别ID如果只有两张表,那么我要查询某类别下的所有商品,SQL语句应该怎么写呢?
=====》
select 商品名 from 商品表 s join 商品类别表 n on s.类别ID=n.类别ID
where 类别名='你的类别名'
2.goods,(god_id,...,fk_lb)所有类别下的所有商品
select splb.lb_name ,goods.* from goods,splb where lb_id=fk_lb
某类别下的所有商品
select splb.lb_name ,goods.* from goods,splb where lb_id=fk_lb and lb_name='某类别'
商品表(goods_id,goods_name,price,unit,type_id)
商品类型表(type_id,type_name,re,parent_id)
注:如果类别有层次结构加上父类id即parent_id
参照关系可以理解为数据来源关系,如商品表中的类别type_id来自于商品类别表,那么我们可以说商品表中的type_id 字段参考商品类别表。这就是参照关系。
select b.lb_name ,a.goods.*
from goods a,splb b
where a.lb_id=b.fk_lb
某类别下的所有商品
select b.lb_name ,a.goods.*
from goods a,splb b
where a.lb_id=b.fk_lb and b.lb_name='某个类别'