我有一个特定的问题。我需要从数据库中获取一些数据。我有一种从程序中检索数据的机制。我需要使用它,不可能进行修改。原始查询是:
SELECT it_Symbol AS Symbol, tt_Name AS Nazwa, tt_Price AS Cena,
tt_Quantity AS Ilosc, tt_Id
FROM tr__Transaction INNER JOIN tr_Item
ON tt_TransId=tr_Id LEFT OUTER JOIN it__Item
ON tt_ItemId = it_Id RIGHT JOIN reg_Site
ON tr_SiteId = rs_Id LEFT OUTER JOIN it_ItemSite
ON it_Id = is_ItemId
WHERE tt_TransId=@transId
GROUP BY tt_Id, tt_Quantity, tr_Id, it_Name, tt_Price,it_Symbol,
is_Name, tt_Name, tt_ItemId, tt_Id
问题在于I need to get some additional data from tr__Transaction table.
它有一个字段tr_Source
。我需要此字段值,但需要在tr__transaction
字段中列出tr_Id
的{{1}}条记录。
任何方式做一个子查询返回依赖于tt_Id列值的值? 或者也许任何其他联合组合?我花了整整一周的时间,没有更多的想法或技能来做到这一点:/ 任何帮助都将非常感激。
答案 0 :(得分:0)
好吧仍然不知道你需要什么,但这是一个清理问题的尝试。因此,这是答案的工作版本,因为您无法在注释中格式化代码。
请解释一些关系是否错误。
只要它们具有不同的别名,您就可以在不同的条件下多次连接表。
例如:
SELECT c.it_Symbol AS Symbol, a.tt_Name AS Nazwa, a.tt_Price AS Cena,
a.tt_Quantity AS Ilosc, a.tt_Id, f.tr_Source
FROM tr__Transaction a
INNER JOIN tr_Item b
ON a.tt_TransId=b.tr_Id
LEFT OUTER JOIN it__Item c
ON a.tt_ItemId = c.it_Id
RIGHT JOIN reg_Site d
ON a.tr_SiteId = d.rs_Id
LEFT OUTER JOIN it_ItemSite e
ON c.it_Id = e.is_ItemId
LEFT OUTER JOIN tr__Transaction f
ON c.tt_id = f.tr_id
WHERE a.tt_TransId=@transId
GROUP BY a.tt_Id, a.tt_Quantity, a.tr_Id, c.it_Name, a.tt_Price,c.it_Symbol,
e.is_Name, a.tt_Name, a.tt_ItemId, a.tt_Id
答案 1 :(得分:0)
我不确定我是否理解你的问题,但假设您说原始SQL语句无法更改(即,它位于只读视图中)。然后你可以将它包装在另一个SELECT语句中。
SELECT tblOriginal.*, tblExtend.tt_Source
FROM (
SELECT it_Symbol AS Symbol, tt_Name AS Nazwa, tt_Price AS Cena,
tt_Quantity AS Ilosc, tt_Id
FROM tr__Transaction INNER JOIN tr_Item
ON tt_TransId=tr_Id LEFT OUTER JOIN it__Item
ON tt_ItemId = it_Id RIGHT JOIN reg_Site
ON tr_SiteId = rs_Id LEFT OUTER JOIN it_ItemSite
ON it_Id = is_ItemId
WHERE tt_TransId=@transId
GROUP BY tt_Id, tt_Quantity, tr_Id, it_Name, tt_Price,it_Symbol,
is_Name, tt_Name, tt_ItemId, tt_Id
) AS tblOriginal
INNER JOIN tr__Transaction AS tblExtend
ON tblOriginal.tt_Id = tblExtend.tt_Id
但是我怀疑你的问题更加复杂,因为你花了一周多的时间。在那种情况下,你能详细说明吗?