为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

跃然一笑 2019-12-26 10:55:16
我有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完成吗?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 875 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信