我与这个人碰壁,但我确定这里有人知道一个方法
我有2个表,例如USERS
和ISSUES
。在USERS中,他们说我们需要2列
在'ISSUES`中他们需要2列
我试图在输出上比较和替换字段。
例如if users.id = issues.assigned_to_id
然后打印'users.firstname instead of
users.id`
任何帮助都会很棒。欢呼你们。
EDIT;我可以对我需要做的两个查询,第一个是这个;
SELECT assigned_to_id AS Name, COUNT(*) AS Issues FROM issues
WHERE `status_id`=1
OR `status_id`=2
OR `status_id`=4
OR `status_id`=7
OR `status_id`=8
OR `status_id`=9
OR `status_id`=10
GROUP BY `assigned_to_id`
和这一个;
SELECT id, firstname FROM users
现在如果users.id = issues.assigned_to_id基本上使用相应的用户名而不是id
答案 0 :(得分:1)
我没有在您的示例中看到issues.firstName列,因此我假设您的意思是users.firstname
所以要用简单的英语说明你的事后......
您想要返回所有问题,当问题与用户匹配时,会返回用户名而不是问题ID吗?
如果是这样,那么应该这样做(从左到右改变你想要的所有问题)
SELECT coalesce(u.FirstName, to_char(I.ID)) as UserNameOrIssueID
FROM Users U
RIGHT JOIN issues I
on U.ID = I.assigned_to_ID
这里棘手的部分是firstname和ID可能是不同的数据类型,因此你必须将user.id强制转换为DB相应语法中的字符字段...
使用显式强制转换(我也假设Issue.ID是一个数字字段,如果它是字符,那么下面的第二个字段将正常工作,因为它甚至不需要进行隐式转换。
SELECT coalesce(u.FirstName, cast(I.ID as char(30)) as UserNameOrIssueID
FROM Users U
RIGHT JOIN issues I
on U.ID = I.assigned_to_ID
希望隐含的作品:
SELECT coalesce(u.FirstName, I.ID) as UserNameOrIssueID
FROM Users U
RIGHT JOIN issues I
on U.ID = I.assigned_to_ID
答案 1 :(得分:0)
我不知道,如果这是你需要的:
select
u.firstname
from
users as u,
issues as i
where
u.id = i.assigned_to_id;
答案 2 :(得分:0)
你做不到......只有你改变了表格问题...... 你所能做的就是这个!
SELECT U.firstname FROM USERS U
LEFT JOIN ISSUES I ON U.id = I.assigned_to_id
我稍后会使用alter table推送更新!保持警惕!
<强>更新强>
IF OBJECT_ID ('tempdb..#TempTable') IS NOT NULL
DROP TABLE #TempTable
SELECT U.firstname INTO #TempTable FROM USERS U
LEFT JOIN ISSUES I ON U.id = I.assigned_to_id
SELECT * FROM #TempTable
-- ALTER TABLE ISSUES ADD firstname varchar(100) -- RUN ONLY ONCE !
UPDATE I
SET firstname = (SELECT TOP 1 U.firstname FROM USERS U
LEFT JOIN ISSUES I ON U.id = I.assigned_to_id)
FROM ISSUES I
SELECT * FROM ISSUES
答案 3 :(得分:0)
我周末看了一下,这是有效的,并做了我需要它做的事情。谢谢你的帮助。
SELECT COUNT(*) as Issues, assigned_to_id as UserID , users.firstname as Name FROM issues
JOIN users on users.id = issues.assigned_to_id
WHERE `status_id`=1
OR `status_id`=2
OR `status_id`=4
OR `status_id`=7
OR `status_id`=8
OR `status_id`=9
OR `status_id`=10
GROUP BY `assigned_to_id`
ORDER BY Issues DESC