a表 列 c_no  合同号
       cid   客户ID 
       sid   供应商IDb表    c_id    客户供应商ID
       c_name  客户供应商名字
       c_flag  客户供应商标志c_id 关联着 a表的cid 和 sid客户和供应商是存在一个表里的,我现在想提取 a表所有数据,并且关联的提出b表的客户供应商名字,客户供应商ID是没有重复的,语句该怎么写
如果不在一个表到好读取,可是我现在这样读取
select * from a,b where a.cid = b.c_id and a.sid = b.c_id ,是根本读不出来的,因为b.c_id是一列
用什么语句可以显示出 这样格式  合同号,客户名称,供应商名称。

解决方案 »

  1.   

    就是b表的客户供应商名字c_name,因为供应商和客户是在一个表中的,所以是一列,只是多用一列标示flag,标示下
      

  2.   

    select D.c_no
    ,E.c_name as '客户名称'
    ,F.c_name as '供应商名称'
     from a as D 
    inner join b as E on D.cid = E.c_id
    inner join b as F on D.sid = F.c_id 
      

  3.   

    flag 如何标示?分别取什么值代表什么意思?
      

  4.   


    select c_no as 合同号,b.c_name as 客户名称,c.c_name as 供应商名称 from a
    join b on a.cid=b.c_id
    join b c on a.sid=c.c_id
      

  5.   

    比如说,a表有一行数据 合同号  客户名称  供应商名称
                          0001    001     002   b表 有两行    客户供应商ID   客户供应商名称  标示
                   001           鸳鸯线业      0
                 002           中天农业      1
     0是表示客户,1表示供应商
      

  6.   

    select 
      c_no as 合同号,
      b.c_name as 客户名称,
      c.c_name as 供应商名称 
    from 
      a,b as b,b as c 
    where 
      a.sid=c.c_id 
    and 
      a.cid=b.c_id
      

  7.   

    select
    合同号,
    客户名称=(select 客户供应商名称 from b where 客户供应商ID=A.客户名称),
    供应商名称 =(select 客户供应商名称 from b where 客户供应商ID=A.供应商名称 )
    from A 
      

  8.   

    select 
    D.c_no
    ,E.c_name as '客户名称'
    ,F.c_name as '供应商名称'
     from 
     a as D 
     join b as E on D.cid = E.c_id
     join b as F on D.sid = F.c_id 两次连接
      

  9.   


    IF OBJECT_ID('b') IS NOT NULL 
    DROP TABLE b
    GO 
    CREATE TABLE b(c_no varchar(20),cid varchar(20),sid varchar(20) ) 
    go 
    insert b SELECT 
    '0001',    '001',    '002'   
     
    IF OBJECT_ID('c') IS NOT NULL 
    DROP TABLE c 
    GO 
    CREATE TABLE c(c_id varchar(20),c_name varchar(20),c_flag  int) 
    go 
    insert c SELECT 
    '001' ,         '鸳鸯线业' ,     0 union all select 
    '002' ,         '中天农业' ,     1 
    select c_no as 合同号,b.c_name as 客户名称,c.c_name as 供应商名称 from b a
    join c b on a.cid=b.c_id
    join c c on a.sid=c.c_id合同号                  客户名称                 供应商名称
    -------------------- -------------------- --------------------
    0001                 鸳鸯线业                 中天农业(1 行受影响)
    --感觉c_flag是多余
      

  10.   

    只有两张表,a表,b表,楼上的C是啥
      

  11.   

    select a.c_no,b.c_name,c.c_name from a 
    left  join b on a.cid=b.c_id left join b as c on a.sid=c.c_id两次连接就可以了,第一次先查出客户的名称,第二次在查处供应商的名称
      

  12.   

    select *from tab_A a,tab_B b where b.c_flag = 客户供应商标志 and a.cid *= b.c_id这样应该可以的吧。
      

  13.   


    select a.c_no as 合同号,b.c_name as 客户名称,c.c_name as 供应商名称
    from a inner join b on a.cid=b.c_id and b.flag=0?or 1?  --不知道你flag0和1哪个代表客户哪个供应商自己填写下
    inner join b as c on a.sid=b.c_id and b.flag= --
      

  14.   

    select a.c_no as 合同号,b.c_name as 客户名称,c.c_name as 供应商名称
    from a inner join b on a.cid=b.c_id and b.flag=0?or 1?  --不知道你flag0和1哪个代表客户哪个供应商自己填写下
    inner join b as c on a.sid=c.c_id and c.flag= --
    之前写错了~