有三个表  doc表  categorie表  和categorielink 表
三表数据如下  
doc  
   did    title        content
    1     这是新闻      这是新闻内容
categorie  cid   pid      name
  1     0         山东省
  2     1         菏泽市
  3     2         曹县
categorielinkdid    id  cid
1      1     0
1      2     1
1      3     2
比如有一条id为1的新闻,我想通过doc.did 来确定 这条新闻属于哪个地方的,但是 地方一定都要显示出来 在这里应该显示为
did    title   content  name其中name 包括 山东省  菏泽市 曹县    

解决方案 »

  1.   

    select a.did,b.title,b.content,c.name from categorielink as a 
    left join doc as b on(a.did=b.did) 
    left join categorie as c on(a.cid=c.cid) 
    where a.id=1
      

  2.   

    谢谢楼上的 ,这段代码执行确实能显示出来,我要的效果  但是会列出来三条一样的数据,除了name不同 我只想列出来一条数据,把地方(山东,菏泽,曹县)存储在一行 可以吗
      

  3.   

    建议你用两个sql语句
     第一个是 连接查询新闻 和所在的地区的ID
    第二个 根据得到ID再查询到地名...
      

  4.   

    未测试
    SELECT d . * , GROUP_CONCAT( c.name
    SEPARATOR  ' ' ) AS name
    FROM  `doc` AS d
    LEFT JOIN categorielink AS cl ON cl.did = d.did
    LEFT JOIN categorie AS c ON c.cid = cl.id
    WHERE 1 
    GROUP BY cl.did
      

  5.   

    以上会列出全部doc表如果你只找did为1的,WHERE d.did=1//改成这样既可
      

  6.   

    doc 表列出来了 但是name字段并没有显示所有的 地方名称(山东 菏泽 曹县)  
      

  7.   

    这是我测试运行的结果,不是这样吗?
    did  title  content  name
    1 这是新闻 这是内容 山东 菏泽 曹县
      

  8.   

    我执行的name字段  值为null
      

  9.   


    select d.did,d.title,d.content,c.name from doc as d, categorie as c, categorielink as cl where d.did = cl.did and cl.cid = c.cid 看下这样可不可以。