2015-10-31 33 views
0

我想從不同表中刪除並添加兩列。從不同表中刪除並添加兩列

桌上的書:

BookID | BookName | Author | Edition | PublishingYear | copies| Shelf | Row 
    1 | SQL | Robert | 3 |  2005  | 3  | A |third 

表問題:(在此我已創建了tblPerson加入以顯示PERSONNAME而非是PersonID)

BookID | BookName | DateIssue | ReturnDate | PersonName | copies 
    1 | SQL  | 2015-10-12 | 2015-10-12 |  john | 1 

表返回:

BookID | BookName | DateIssue | ReturnDate | PersonName | copies 
    1 | SQL  | 2015-10-12 | 2015-10-12 |  john | 1 

Sql查詢:

Select (tblBook.copies) - (tblIssue.copies) 
FROm tblBook 
FULL join tblIssue 
ON tblBook.copies = tblIssue.copies 

此查詢不會將這兩列(副本)列出。 我想在發行本書時減去來自tblbook列副本(原始值)的列(副本)tblIssue。 當我從tbl Return返回書籍時,它給了我tblBook中列(副本)的原始值。

+0

看來你需要加入上的BookID,而不是 –

+0

'選擇(tblBook.copies)打印份數 - (tblIssue.copies) 從tblBook FULL加入tblIssue ON tblBook.BookID = tblIssue.BookID' –

+0

的BookID | BookName | DateIssue | ReturnDate | PersonName |複製1 | SQL | 2015-10-12 | 2015-10-12 |約翰| 1 – Warda

回答

1

當您在進行連接時,您需要將它們綁定到表上的表上的表連接起來。

將副本上的兩個表連接在一起並不合乎邏輯,所以將其加入主鍵外鍵引用BookID。

Select (tblBook.copies) - (tblIssue.copies) 
FROm tblBook 
FULL join tblIssue 
ON tblBook.BookId = tblIssue.BookId 

這將產生以下結果,如果沒有否定的話。

BookID | BookName | Author | Edition | PublishingYear | copies| Shelf | Row | BookID | BookName | DateIssue | ReturnDate | PersonName | copies 
    1 | SQL | Robert | 3 |  2005  | 3  | A |third| 1 | SQL  | 2015-10-12 | 2015-10-12 |  john | 1 

由此減去3-1這應該等於2。但重要的是要考慮連接結果應該是什麼,然後規劃出連接策略。

EDIT 1

的多少書是在給定的時間availeble示例查詢

Select tblBook.BookId, MAX(tblBook.copies) - SUM(tblIssue.copies) as countOfAvailebleBooks 
FROm tblBook 
FULL join tblIssue 
ON tblBook.BookId = tblIssue.BookId 
WHERE tblIssue.ReturnDate >= '2015-10-12'AND tblIssue.IssueDate <= '2015-10-12' 

這將產生一個集合結果對於給定的日期,該日期是2015年10月12日爲在這種情況下,你有多少本書可供使用,這不是最優的,但你給了什麼,它似乎是最好的解決方案。

+0

其實這可以是真實的,如果有是一對一的關係。否則你將需要一些分組和總結副本等。但由於OP沒有提供任何細節,所以此時此時是正確的。 –

+0

您的查詢僅顯示副本欄。我想要在副本列 – Warda

+0

中加入Person Name和subraction來顯示BookID | BookName | DateIssue | ReturnDate | PersonName |副本 1 | SQL | 2015-10-12 | 2015-10-12 |約翰| 1 – Warda