这个太让我挠头了!基本上,我需要显示位置列表、存储在那里的当前项目以及拥有它的人。我创建了 4 个表,并用数据填充了这些表。
设置:MSSQL 2008
我正在寻找的是来自 tbl_locationHistory 的项目和所有者的“Top(1)”,因为在每个位置的任何时候都只能有一个项目或一个所有者。请记住,tbl_locationHistory 可能有多个数据位,我只需要为每个数据提取最新的 ID(例如,历史表中当前可用的最高 ownerID、最高 itemID)。
tbl_location
locID 位置名称
tbl_item
itemID itemName
tbl_owner
所有者 ID 所有者名称
tbl_locationHistory
locHistID locID itemID ownerID dateModified
我尝试将所有这些表与连接连接在一起。但是我意识到这行不通,因为我没有拉回“所有者”或“物品”的最高 ID,因此显示的数据将不准确。
我想到的一件事是我应该将历史表分成两部分:1 x 所有者到位置和 1 x 项目到位置 - 但是我现在处于 SQL 的极限,所以可以用一些正确方向的指针来做因为不知道该怎么做。
因此,即使我必须分解历史记录表,我也需要帮助。
2012 年 1 月 11 日更新
好的,我将在这里粘贴一些代码。
我是一个老派的经典 ASP 编码器.....还需要继续前进!我正在使用经典的 asp 和 MSSQL 来创建这个应用程序。我也在使用dreamweaver,因此希望将查询放在其中,这样我就可以使用DW CS6中的“绑定”功能。
这是我的原始查询:
SELECT DISTINCT p.pID, p.cliID, p.pNo, p.pName, p.dtCommissioned,
p.description, ps.plotStatus, pt.plotType, o.oSalutation, o.oFname, o.oSname, man.manName,
mod.model, sl.width, sl.length, sl.yr
FROM history AS ph INNER JOIN owners AS o ON ph.ownerID
= o.ownerID INNER JOIN StockList AS sl ON ph.stockID = sl.stkID
INNER JOIN manufacturers AS man ON sl.make = man.manID
INNER JOIN models AS mod ON sl.model = mod.cID FULL OUTER
JOIN plotType AS pt RIGHT OUTER JOIN
plots AS p ON pt.plotTypeID = p.plotType LEFT OUTER JOIN
plotStatus AS ps ON p.pStatus = ps.plotStatusID ON ph.plotID = p.pID
WHERE (p.cliID = value)
ORDER BY p.pNo
现在,当我意识到我没有正确地在历史表中查找“stockID”的最高 HistoryID 以及“ownerID”的最高 plotHistoryID 时,我开始研究如何为每个 ID 执行“子查询”。 .....这就是我卡住的地方。
我已经尝试了一些类似的东西:
Select p.pID, p.cliID, p.pNo, p.pName, p.dtCommissioned,
p.description, ps.plotStatus, pt.plotType, o.oSalutation, o.oFname, o.oSname, man.manName,
mod.model, sl.width, sl.length, sl.yr
(Select top 1 ph.plotHistoryID, ownerID
FROM History AS ph
order by ph.plotHistoryID desc)
THEN JOINING ETC
THEN DO ANOTHER SUBQUERY FOR THE OWNER ETC
但是我无法让它工作,但我现在超出了与子查询和联接相关的 SQL 水平。
输出显示将是:
地块号 | 地块名称 | 情节类型 | 地块状态 | 当前所有者 | 当前库存
每个 Plot No's/Names/Type/Status 都将填充我需要显示的数据。如果所有者\当前股票为空白,我有一个 IF 语句,说“没有所有者”或“没有找到股票”。
然后,用户将能够单击行末尾的“查看”链接并查看绘图/位置的详细信息,并将 pID 通过 QueryString 传递到下一页。
这有帮助吗?我现在有点绝望了!哈哈