Php 我的查询没有';不行。我能做什么?
我想显示一个带有这些Php 我的查询没有';不行。我能做什么?,php,mysql,sql,Php,Mysql,Sql,我想显示一个带有这些-s: 项目名称 说明 状态 开始日期 结束日期 用户 问题是,我的子查询返回的行不止一行。 通常有4个人属于一个项目,一个所有者、一个经理、一个开发人员和一个测试人员。所有者可以创建新项目,这样他就可以看到我想要创建的项目表,但我不能将用户放在表的末尾,因为每一行都有多个用户 以下是查询: SELECT project.id, title, description, status, start,end FROM project LEFT J
-s:项目名称
说明
状态
开始日期
结束日期
用户
问题是,我的子查询返回的行不止一行。 通常有4个人属于一个项目,一个所有者、一个经理、一个开发人员和一个测试人员。所有者可以创建新项目,这样他就可以看到我想要创建的项目表,但我不能将用户放在表的末尾,因为每一行都有多个用户 以下是查询:
SELECT project.id, title, description, status, start,end
FROM project
LEFT JOIN users ON (SELECT userid FROM roles,project WHERE projectid=project.id)=users.id
我的桌子是:
项目id
标题
说明
状态
开始
结束
用户
id
名称
通过
电子邮件
角色
id
投影d
用户ID
rolename
在子句中使用
,例如
JOIN users ON users.id IN (SELECT userid FROM ....)
=
用于比较两个单一值<
中的code>用于检查一组值中是否有单个值。使用中的子句,例如
JOIN users ON users.id IN (SELECT userid FROM ....)
=
用于比较两个单一值<
中的code>用于检查一组值中是否有单个值。使用中的子句,例如
JOIN users ON users.id IN (SELECT userid FROM ....)
=
用于比较两个单一值<
中的code>用于检查一组值中是否有单个值。使用中的子句,例如
JOIN users ON users.id IN (SELECT userid FROM ....)
=
用于比较两个单一值<
中的code>用于检查一组值中是否有单个值。尝试联接所有表,而不是像下面这样的子查询:
SELECT project.id, title, description, status, start,`end` ,GROUP_CONCAT( users.name) AS usernames
FROM project
LEFT JOIN roles On roles.projectid = project.id
LEFT JOIN users ON roles.userid =users.id
GROUP BY project.id
尝试按如下方式连接所有表而不是子查询:
SELECT project.id, title, description, status, start,`end` ,GROUP_CONCAT( users.name) AS usernames
FROM project
LEFT JOIN roles On roles.projectid = project.id
LEFT JOIN users ON roles.userid =users.id
GROUP BY project.id
尝试按如下方式连接所有表而不是子查询:
SELECT project.id, title, description, status, start,`end` ,GROUP_CONCAT( users.name) AS usernames
FROM project
LEFT JOIN roles On roles.projectid = project.id
LEFT JOIN users ON roles.userid =users.id
GROUP BY project.id
尝试按如下方式连接所有表而不是子查询:
SELECT project.id, title, description, status, start,`end` ,GROUP_CONCAT( users.name) AS usernames
FROM project
LEFT JOIN roles On roles.projectid = project.id
LEFT JOIN users ON roles.userid =users.id
GROUP BY project.id
我假设您希望结果表的一个单元格中包含所有用户,但其单元格中仅包含其他字段的一个副本。如果您真的希望将其放在一个表中,则需要在代码中解析结果。使用包含所有所需字段的查询,如下所示:
SELECT project.id, title, description, status, start,end, users.name
FROM project
LEFT JOIN roles On roles.projectId = project.id
LEFT JOIN users ON roles.userId = users.id
然后在代码中检查重复项,不要显示它们。伪代码示例:
loop over all result rows {
if( new_id <> old_id ){
if not first row close your previous row </tr>
display <tr>
display all the fields
}else{
only display the addition of the user name (with a <br> or whatever to separate)
}
}
close your last row </tr>
在所有结果行上循环{
if(新id旧id){
如果不是第一行,请关闭上一行
展示
显示所有字段
}否则{
仅显示添加的用户名(使用
或任何分隔符)
}
}
关闭最后一排
这可能会以您想要的方式显示,但数据不会与一个显示表对齐。考虑一个链接,将用户列表显示为弹出式div.< /p> < p>我假设您希望所有用户都在您的结果表的单元格中,但它们的单元格中只有其他字段的一个副本。如果您真的希望将其放在一个表中,则需要在代码中解析结果。使用包含所有所需字段的查询,如下所示:
SELECT project.id, title, description, status, start,end, users.name
FROM project
LEFT JOIN roles On roles.projectId = project.id
LEFT JOIN users ON roles.userId = users.id
然后在代码中检查重复项,不要显示它们。伪代码示例:
loop over all result rows {
if( new_id <> old_id ){
if not first row close your previous row </tr>
display <tr>
display all the fields
}else{
only display the addition of the user name (with a <br> or whatever to separate)
}
}
close your last row </tr>
在所有结果行上循环{
if(新id旧id){
如果不是第一行,请关闭上一行
展示
显示所有字段
}否则{
仅显示添加的用户名(使用
或任何分隔符)
}
}
关闭最后一排
这可能会以您想要的方式显示,但数据不会与一个显示表对齐。考虑一个链接,将用户列表显示为弹出式div.< /p> < p>我假设您希望所有用户都在您的结果表的单元格中,但它们的单元格中只有其他字段的一个副本。如果您真的希望将其放在一个表中,则需要在代码中解析结果。使用包含所有所需字段的查询,如下所示:
SELECT project.id, title, description, status, start,end, users.name
FROM project
LEFT JOIN roles On roles.projectId = project.id
LEFT JOIN users ON roles.userId = users.id
然后在代码中检查重复项,不要显示它们。伪代码示例:
loop over all result rows {
if( new_id <> old_id ){
if not first row close your previous row </tr>
display <tr>
display all the fields
}else{
only display the addition of the user name (with a <br> or whatever to separate)
}
}
close your last row </tr>
在所有结果行上循环{
if(新id旧id){
如果不是第一行,请关闭上一行
展示
显示所有字段
}否则{
仅显示添加的用户名(使用
或任何分隔符)
}
}
关闭最后一排
这可能会以您想要的方式显示,但数据不会与一个显示表对齐。考虑一个链接,将用户列表显示为弹出式div.< /p> < p>我假设您希望所有用户都在您的结果表的单元格中,但它们的单元格中只有其他字段的一个副本。如果您真的希望将其放在一个表中,则需要在代码中解析结果。使用包含所有所需字段的查询,如下所示:
SELECT project.id, title, description, status, start,end, users.name
FROM project
LEFT JOIN roles On roles.projectId = project.id
LEFT JOIN users ON roles.userId = users.id
然后在代码中检查重复项,不要显示它们。伪代码示例:
loop over all result rows {
if( new_id <> old_id ){
if not first row close your previous row </tr>
display <tr>
display all the fields
}else{
only display the addition of the user name (with a <br> or whatever to separate)
}
}
close your last row </tr>
在所有结果行上循环{
if(新id旧id){
如果不是第一行,请关闭上一行
展示
显示所有字段
}否则{
仅显示添加的用户名(使用
或任何分隔符)
}
}
关闭最后一排
这可能会以您想要的方式显示,但数据不会与一个显示表对齐。考虑一个链接,将用户列表显示为弹出式div.< /p>参见GROMP-CONTAT,用于快速获取非规范化的“用户”文本列,即“多行到一列”。也可以使用分组方式。这对于非规范化单个值(例如名称)来说是可行的(但在处理关联值方面做得很差)。或者,在客户端进行处理。能否提供一些数据和预期输出?有关如何快速获取非规范化的“用户”文本列(即“多行一列”)的信息,请参阅GROUP_CONCAT。也可以使用分组方式。这对于非规范化单个值(例如名称)来说是可行的(但在处理关联值方面做得很差)。或者,在客户端进行处理。能否提供一些数据和预期输出?有关如何快速获取非规范化的“用户”文本列(即“多行一列”)的信息,请参阅GROUP_CONCAT。也可以使用分组方式。这对于非规范化单个值(例如名称)来说是可行的(但在处理关联值方面做得很差)。或者,在客户端进行处理。您能提供一些数据和预期输出吗?有关如何快速获得非规范化的“用户”te,请参阅GROUP_CONCAT