表一:
carID     
man1ID
man2ID
man3ID表二:
manID
manName表三:
carID
carName
比如说车上坐了三个人,表一是车和车上的人,表2是人的编号和姓名
表三是车号和车名
通过查表一二三,得到结果 carName,man1Name,man2Name,man3Name
???不要建议我改表结构!!
谢谢!!

解决方案 »

  1.   

    select 表一.carID,表一.man1ID.,表一.man2ID,表一.man3Id,表二.manID,表二.manName,表三.carId,表三.catName from 表一,表二,表三  where 查询条件就可以了。
      

  2.   

    用select into试试了,你这个表结构和要的结果还真不好查
      

  3.   

    select carName=(select top 1 carName from 表三 where carID=a.carID),
      man1Name=(select top 1 manName from 表二 where man1ID=a.manID),
      man2Name=(select top 1 manName from 表二 where man2ID=a.manID),
      man3Name=(select top 1 manName from 表二 where man3ID=a.manID)
    from 表一 a
      

  4.   

    select carName=(select top 1 carName from 表三 where carID=a.carID),
      man1Name=(select top 1 manName from 表二 where man1ID=a.manID),
      man2Name=(select top 1 manName from 表二 where man2ID=a.manID),
      man3Name=(select top 1 manName from 表二 where man3ID=a.manID)
    from 表一 a
    想了一下,只能用这个了
      

  5.   

    呵呵,想了一下,好像行不通(select top 1 manName from 表二 where man3ID=a.manID)
    返回若干个记录,第一个有可能不是我们选中的人
    上面查询有个问题,主句要用子句的结果,同时,子句也要用主句的结果,那就是鸡和蛋的问题了字句这样写"select manName from 表二 where man3ID=(select man3ID from 表一 where a.carID=条件)"
    没试过,高人指点一下!!
      

  6.   

    SELECT  *    
    FROM 表一 a ,表二 b , 表三 c 
    WHERE a.carID=c.carid 
          AND a.man1id = manid
          AND a.man2id = manid
          AND a.man3id = manid
          ....................
    你这个SQL不好写因a.man1id这个字段不能确定有多少,建议你修改结构,不然只能写成固定的.
      

  7.   

    SELECT 表3.carname,A.manname AS man1name,B.manname AS man2name,C.manname AS man3name FROM 表1 INNER JOIN 表3 ON 表1.carid=表3.carid INNER JOIN 表2 AS A ON 表1.manid=A.manid INNER JOIN 表2 AS B ON 表1.manid=b.manid INNER JOIN 表2 AS c ON 表1.manid=c.manid
      

  8.   

    不好意思,应该是:
    SELECT 表3.carname,A.manname AS man1name,B.manname AS man2name,C.manname AS man3name FROM 表1 INNER JOIN 表3 ON 表1.carid=表3.carid INNER JOIN 表2 AS A ON 表1.man1id=A.manid INNER JOIN 表2 AS B ON 表1.man2id=b.manid INNER JOIN 表2 AS c ON 表1.man3id=c.manid
      

  9.   

    楼上的方法是正确的,用联合查询inner join可以将三个表关联起来.