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

626

我有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);



    while(false !== ($row = mysql_fetch_assoc($result))) {
        if(!$flag) {
            $colnames = array(
                'Created For' => "Created For",
                'Company' => "Company",
                'Case ID' => "Case ID",
                'Created On' => "Created On",
                'Created By' => "Created By",
                'Description' => "Description"
            );
            // display field/column names as first row
            echo implode("\t", array_keys($colnames)) . "\r\n";
            $flag = true;
    }


        $row['createdOn'] = date('m-d-Y | g:i a', strtotime($row['createdOn']));

    array_walk($row, 'cleanData');
    echo implode("\t", array_values($row)) . "\r\n";
  }
  exit;

  ?>

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

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

可以通过CONCAT或FIND_IN_SET完成吗?

请帮忙!提前致谢!

吴宇森
SELECT  a.nid,
        GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName
FROM    Notes a
        INNER JOIN Positions b
            ON FIND_IN_SET(b.id, a.forDepts) > 0
GROUP   BY a.nid

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Perl中以逗号分隔的单列值联接两个文件

来自分类Dev

mysql如何联接两个以上的表

来自分类Dev

用逗号分隔列表联接表

来自分类Dev

MySQL联接两个表查询

来自分类Dev

根据逗号分隔的值联接表

来自分类Dev

在MySQL中使用连接两个表以逗号分隔的ID来获取值

来自分类Dev

联接两个表时如何避免重复值?

来自分类Dev

通过逗号分隔符分割两个逗号分隔的值,并将其存储在同一临时表的两列中

来自分类Dev

基于相互喜欢在MySQL中联接两个表

来自分类Dev

MySQL排序值包含两个用“ x”分隔的数字

来自分类Dev

MySQL联接查询两个表

来自分类Dev

如何在MySQL中联接这两个表

来自分类Dev

用聚集函数联接两个表

来自分类Dev

用填充字段的最大日期联接两个表

来自分类Dev

MySQL使用逗号分隔的值链接两个表

来自分类Dev

mysql联接两个表的问题

来自分类Dev

解析两个逗号分隔的字段

来自分类Dev

MySQL联接两个表查询

来自分类Dev

根据逗号分隔的值联接表

来自分类Dev

PHP MySQL使用条件联接联接两个表

来自分类Dev

while循环检查两个用逗号分隔的值

来自分类Dev

MySQL排序值包含两个用“ x”分隔的数字

来自分类Dev

如何联接两个mysql表

来自分类Dev

如何使用联接查询返回两个表值

来自分类Dev

用两个表联接创建逗号分隔的查询

来自分类Dev

使用awk在两个制表符分隔的列中减去多个逗号分隔的值

来自分类Dev

用混合列联接两个表

来自分类Dev

MySQL 使用反联接在两个表之间选择非重复值

来自分类Dev

合并两个以逗号分隔的数组