【问题标题】:based on count pull images from an another table基于计数从另一个表中提取图像
【发布时间】:2017-06-09 02:53:03
【问题描述】:

我有两张桌子:

徽章图像的列表:

还有一个表格,其中包含特定员工赢得的徽章的计数:

对于特定员工,(使用 EmployeeID)我想显示计数大于 0 的所有徽章的图像。

比如上表中的phil,除了slacker之外的所有badge的count都大于0,所以所有这些badge计数为1的图片都会显示出来。

请帮助我。

【问题讨论】:

  • 你最好将第二个表重新设计为 (EmpId,BageId,count) 并简单地使用 JOIN。
  • @Serg 我知道我可以在这里使用内部联接。现在的重点是如何在第二个表中添加 badgeId。基于我可以加入的实体。

标签: sql sql-server sql-server-2008 sql-server-2005 sql-server-2012


【解决方案1】:

我认为这是你想要的:

select t1.badgeImage
from table2 t2 join
     table1 t1
     on (t2.intoTheGame > 0 and t1.BadgeName = 'intoTheGame') or
        (t2.getALife > 0 and t1.BadgeName = 'getALife') or
        . . .
where t2.employeeid = ?;

【讨论】:

    【解决方案2】:

    试试这个,这个查询可以正常工作。

    SELECT EMPLOYEEID,EMPLOYEENAME,A.BADGENAME,BADGEID,BADGEIMAGE,COUNTS FROM (
    SELECT EMPLOYEEID,EMPLOYEENAME,BADGENAME,COUNTS FROM EMPLOYEE--SECONDTABLE
    UNPIVOT(
    COUNTS FOR BADGENAME IN (INTOTHEGAME,GETALIFE,SLOGGER,SLACKER,BEYONDCALLOFDUTY)
    )PVT
    )A INNER JOIN BADGES B ON A.BADGENAME=B.BADGENAME----FIRST TABLE
    WHERE COUNTS >0
    

    【讨论】:

    • 这不会带我去任何地方。这里没有计数属性。不管怎样,因为你试过了。
    • @jane,我在选择列表中添加了一个计数列。让我们再检查一个。
    • 第二个表中没有名为“BadgeName”的属性
    • 你最好发布预期的结果@Jane。
    猜你喜欢
    • 1970-01-01
    • 2020-09-23
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2015-09-12
    • 1970-01-01
    • 2021-06-07
    相关资源
    最近更新 更多