【问题标题】:Select list t-sql选择列表 t-sql
【发布时间】:2015-03-15 21:29:24
【问题描述】:

我有这个代码:

select top 3 
    w.firstName, 
    w.lastName, 
    w.fbId, 
    w.idNumber, 
    w.address, 
    w.phoneNumber, 
    q.userId, 
    c.codeVal,  
    q.bidedItem, 
    SUM(q.bidCount) as sumOfBids, 
    sum(w.codesLeft + q.bidCount) as allCode
from 
    geopl_kubetiAuct.firstWeekBids as q 
join 
    geopl_kubetiAuct.Users w on q.userId = w.Id
join 
    geopl_kubetiAuct.Code c on c.userId = q.userId
where 
    q.bidedItem = 'GalaxyTabs' 
group by 
    w.firstName, w.lastName, w.fbId, w.idNumber, 
    w.address, w.phoneNumber, q.bidedItem, q.userId, c.codeVal
order by 
    sumOfBids desc

它可以工作并选择所有内容OK,但有一个问题。我希望它从geopl_kubetiAuct.Code 中选择所有代码。

当我执行join geopl_kubetiAuct.Code c on c.userId = q.userId 时,它只检索第一个代码。如何选择代码列表?

【问题讨论】:

  • 它应该为该 userId 的代码表中的每个代码检索一个记录...你是什么意思它只检索第一个代码?
  • @GB 我希望它检索 List 或类似的东西
  • 您是说不是每个代码都有单独的行,而是希望该用户的所有代码返回并显示在单行中?
  • 类似的东西。没有一行我只想检索这些值的列表
  • 您能否展示您获得的数据与您想要的数据?因为我无法理解你的要求。您是否要求每个用户对每个代码都有一行,无论它是否存在?如果你能提供一个你得到的输出和你想要得到的输出的例子,帮助你会容易得多。

标签: sql sql-server sql-server-2008 tsql sql-server-2008-r2


【解决方案1】:

删除了TOP 3 并添加了实际的连接类型

SELECT w.firstName, w.lastName, w.fbId, w.idNumber, w.address, w.phoneNumber, q.userId, c.codeVal,  q.bidedItem, SUM(q.bidCount) AS sumOfBids, sum(w.codesLeft + q.bidCount) AS allCode
FROM geopl_kubetiAuct.firstWeekBids as q 
INNER JOIN geopl_kubetiAuct.Users w on q.userId = w.Id
INNER JOIN geopl_kubetiAuct.Code c on c.userId = q.userId
WHERE q.bidedItem = 'GalaxyTabs' 
GROUP BY w.firstName, w.lastName, w.fbId, w.idNumber, w.address, w.phoneNumber, q.bidedItem, q.userId, c.codeVal
ORDER BY sumOfBids DESC

但是,如果您的数据在连接的所有表中都不完整,请尝试 LEFT JOIN

SELECT w.firstName, w.lastName, w.fbId, w.idNumber, w.address, w.phoneNumber, q.userId, c.codeVal,  q.bidedItem, SUM(q.bidCount) AS sumOfBids, sum(w.codesLeft + q.bidCount) AS allCode
FROM geopl_kubetiAuct.firstWeekBids as q 
LEFT JOIN geopl_kubetiAuct.Users w on q.userId = w.Id
LEFT JOIN geopl_kubetiAuct.Code c on c.userId = q.userId
WHERE q.bidedItem = 'GalaxyTabs' 
GROUP BY w.firstName, w.lastName, w.fbId, w.idNumber, w.address, w.phoneNumber, q.bidedItem, q.userId, c.codeVal
ORDER BY sumOfBids DESC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2023-03-17
    • 2015-03-04
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多