我有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
问题内容: 我有两个表,和。 在表中我有一列。该列由电影适合的类别组成。这些类别是用逗号分隔的ID。 这是一个例子: 现在是一个实际的问题:是否可以执行一个查询,从电影表中排除类别列,而是从类别表中选择匹配的类别并以数组形式返回它们?像联接一样,但问题是存在多个用逗号分隔的类别,是否可以进行某种正则表达式? 问题答案: 在数据库字段中使用逗号分隔的列表是一种反模式,应不惜一切代价避免使用。 因为在
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: mysql是多列数组 我有两个表: 帖子表 Gallery中的值是Images表中的主键: 图片表 我之所以这样做,而不仅仅是在Images表中添加PostID键,是因为这些图像可以与许多不同的帖子相关联。我想我可以为关系添加另一个表,但是就我要添加到其中的jQuery脚本而言,逗号分隔的值更易于使用。 如果我在需要与PostI
问题内容: 我有2张桌子和。表包含客户的电子邮件。 我正在使用PHP-IMAP从电子邮件服务器获取电子邮件,然后将其保存到数据库表。 该表有2个字段,并且字段包含逗号分隔的值。 我需要获取从第一台邮件,然后搜索对与上。 首先,我考虑了要搜索的条件,但我想拥有类似的东西或其他东西。 我怎样才能更好地做到这一点?(由于某些原因,我无法在此表上使用关系) 请指教。 问题答案: 基于FIND_IN_SET
问题内容: 我的一个表中有一列,其中存储多个用逗号分隔的ID。有没有一种方法可以在查询的“ IN”子句中使用此列的值。 column()的值类似于 我需要用作 我对Crozin的回答感到满意,但我愿意接受建议,观点和选择。 随时分享您的观点。 问题答案: 以@Jeremy Smith的FIND_IN_SET()示例为基础,您可以使用联接来完成此操作,因此不必运行子查询。 这是众所周知的非常表现
问题内容: 我想比较具有两个不同Oracle表的逗号分隔值的两列(差异表)的值。我想找到与所有值 都 匹配的行( 所有值都应与值匹配)。 注意:逗号分隔值的顺序不同。 例子: T1: T2: MY RESULT应该仅在两个表中显示基于“所有名称匹配”的匹配行。 尝试过但无法使其正常工作。 我使用下面的代码来解析值: 问题答案: 您可以将表格转换为第一范式,然后比较存储在每一行中的化合物。起点可以是
我有几个表我需要加入,我不能改变数据库,因为它正在多个不同的应用程序中使用。 第一个表如下所示