MySQL用逗号分隔值联接两个表

我有2张桌子如下


笔记表


╔══════════╦═════════════════╗

║ nid      ║    forDepts     ║

╠══════════╬═════════════════╣

║ 1        ║ 1,2,4           ║

║ 2        ║ 4,5             ║

╚══════════╩═════════════════╝

职位表


╔══════════╦═════════════════╗

║ id       ║    name         ║

╠══════════╬═════════════════╣

║ 1        ║ Executive       ║

║ 2        ║ Corp Admin      ║

║ 3        ║ Sales           ║

║ 4        ║ Art             ║

║ 5        ║ Marketing       ║

╚══════════╩═════════════════╝

我想查询我的Notes表并将'forDepts'列与Positions表中的值相关联。


输出应为:


    ╠══════════╬════════════════════════════╣

    ║ 1        ║ Executive, Corp Admin, Art ║

    ║ 2        ║ Art, Marketing             ║

    ╚══════════╩════════════════════════════╝

我知道数据库应该规范化,但是我不能更改此项目的数据库结构。


这将用于使用以下代码导出excel文件。


<?PHP


    $dbh1 = mysql_connect($hostname, $username, $password); 

    mysql_select_db('exAdmin', $dbh1);



    function cleanData(&$str)

  {

    $str = preg_replace("/\t/", "\\t", $str);

    $str = preg_replace("/\r?\n/", "\\n", $str);

    if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';

  }


    $filename = "eXteres_summary_" . date('m/d/y') . ".xls";


    header("Content-Disposition: attachment; filename=\"$filename\"");

    header("Content-Type: application/vnd.ms-excel");

    //header("Content-Type: text/plain");


    $flag = false;



    $result = mysql_query(

    "SELECT p.name, c.company, n.nid, n.createdOn, CONCAT_WS(' ',c2.fname,c2.lname), n.description 

     FROM notes n 

     LEFT JOIN Positions p ON p.id = n.forDepts

     LEFT JOIN companies c ON c.userid = n.clientId

     LEFT JOIN companies c2 ON c2.userid = n.createdBy"

     , $dbh1);

 

此代码仅输出“ forDepts”的第一个值


考试:执行人员(而不是执行人员,公司行政人员,Art)


可以通过CONCAT或FIND_IN_SET完成吗?


跃然一笑
浏览 859回答 2
2回答
打开App,查看更多内容
随时随地看视频慕课网APP