有三张表,
1.splb,(lb_id,lb_name 两个字段)
2.goods,(god_id,...,fk_lb)
3.中间表,(ID,商品ID和类别ID三个字段)考虑到,如果直接在splb里弄个外键,查询的时候,会有很多重复的数据(会多次出现同一个类别名称)出现。所以就建了个中间表,但我被关系搞晕了。
我要查商品表里面所有与商品类别名称相同的数据。SQL语句应该如何些。
或者表是否不应该这样建?我的思路正确么?请大家多多指教。

解决方案 »

  1.   

    我也被你搞晕了
    goods是商品表?splb是什么表,业务表?
    每笔业务关联某个商品?
      

  2.   

    你的一个商品还会有多种类别呀查询入下
    select goods.*,splb.lb_name  
    from goods left join 中间表 on goods.god_id=中间表.商品ID
     left join splb on 中间表.类别ID=splb.lb_id
      

  3.   

    商品表(id , name , 其他字段)
    商品类型表(id , name , 价格 , 商品id , 其他字段)
    goods(id , 商品类型id , 其他字段)
      

  4.   

    select count(*) from splb and goods group dy 商品类别名称
      

  5.   

    一个商品应该就只属于一个类别吧!只需要在商品表里建一个外键么?如果只有两张表,那么我要查询某类别下的所有商品,SQL语句应该怎么写呢?
      

  6.   

    商品类别表 (类别ID 类别名) primary key 类别ID 
    商品表(商品ID 商品名 商品属性列1  商品属性列2 .. 类别ID) primary key 商品ID foreign key 类别ID如果只有两张表,那么我要查询某类别下的所有商品,SQL语句应该怎么写呢?
    =====》
    select 商品名 from 商品表 s join 商品类别表 n on s.类别ID=n.类别ID 
    where 类别名='你的类别名'
      

  7.   

    两表:1.splb,(lb_id,lb_name )
    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='某类别'
      

  8.   

    只需要两张表:
    商品表(goods_id,goods_name,price,unit,type_id)
    商品类型表(type_id,type_name,re,parent_id)
    注:如果类别有层次结构加上父类id即parent_id
    参照关系可以理解为数据来源关系,如商品表中的类别type_id来自于商品类别表,那么我们可以说商品表中的type_id 字段参考商品类别表。这就是参照关系。
      

  9.   

    所有类别下的所有商品
    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='某个类别'