これは私に頭を悩ませています!基本的に、場所、そこに保管されている現在のアイテム、およびその所有者のリストを表示する必要があります。4 つのテーブルを作成し、これらにデータを入力しました。
セットアップ: MSSQL 2008
私が探しているのは、アイテムと所有者の tbl_locationHistory からの「Top(1)」です。これは、各場所で一度に 1 つのアイテムまたは 1 つの所有者しか存在できないためです。tbl_locationHistory には複数のデータが含まれる可能性があることに注意してください。それぞれの最新の ID を取得する必要があります (たとえば、履歴テーブルから現在入手できる最高の ownerID、最高の itemID)。
tbl_location
locID locName
tbl_item
itemID itemName
tbl_owner
所有者 ID 所有者名
tbl_locationHistory
locHistID locID itemID ownerID dateModified
これらすべてのテーブルを結合して結合しようとしました。ただし、「所有者」または「アイテム」のトップIDを引き戻していないため、表示されるデータが不正確になるため、機能しないことに気付きました。
私が考えたことの1つは、履歴テーブルを2つの部分に分割する必要があるということです.1つの所有者から場所へ、1つのアイテムから場所へ - しかし、私は今SQLの限界に達しているので、正しい方向のいくつかのポインタで行うことができますこれでどちらに行くかわからないので。
したがって、履歴テーブルを分割する必要がある場合でも、支援が必要になります。
2012 年 1 月 11 日更新
OK、ここにコードを貼り付けます。
私は古い学校の古典的な 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
ただし、それを機能させることはできませんでしたが、サブクエリとJOINSに関連して、SQLのレベルを超えています。
出力表示は次のようになります。
プロット番号 | プロット名 | プロット タイプ | プロット状況 | 現在の所有者 | 現在の在庫
プロット番号/名前/タイプ/ステータスのそれぞれに、表示する必要があるデータが入力されます。所有者\現在の在庫が空白の場合、「所有者なし」または「在庫が見つかりません」という IF ステートメントがあります。
ユーザーは、行の最後にある「表示」リンクをクリックして、プロット/場所の詳細を表示し、QueryString を介して次のページに pID を渡すことができます。
これは役に立ちますか?私は今、少し絶望的になっています!笑