2014-03-28 60 views
0

我試圖從不同的表中加入數據並在datagrid中顯示它們,但是我得到一個錯誤。如何在c#中編寫sql語句來加入數據

我試圖從這些表中獲取此信息。順便說一句,用戶需要輸入他的ID。

預訂

UPDATE

「+ this.UserID +」 是用戶的實際ID(INT)

bookingID:1(INT)

BOOKID: 3(int)

userID:1(int)

USERS

名稱:傑克(串)

名字:瓊斯(串)

BOOKS

NameOfTheBook:指環王(串)

END RESULT

1,3,1傑克瓊斯指環王(在數據網格表)

string Query = 
    "SELECT bookingID, bookID, userID, Name, LastName, NameOfTheBook " + 
    "FROM Reservations, Users, Books "+ 
    "WHERE userID = " + thisUserID.Text + 
    " AND Users.ID = " + thisUserID.Text + 
    " AND Books.ID = " + thisUserID.Text + ""; 

ERROR 所需的參數中的至少一個的值尚未確定

我該如何解決?

+3

您需要查看[Joins](http://www.sitepoint.com/understanding-sql-joins-mysql-database/) –

+0

看起來您可能會缺少表中的某些字段。是否有USERS.userID和BOOKS.bookID?如果是這樣,我會修改查詢,以便將這三個表連接在一起。 – STLDeveloper

+0

@STL開發人員不,他們不是。他們只存在於預訂,但我不知道如何做不同。有小費嗎? – fkr

回答

0

逐步瀏覽並查看Query的結果。我懷疑這可能是你沒有鏈接到正確的字段。

它應該像更多這樣讀? :

string Query = 
"SELECT bookingID, bookID, userID, Name, LastName, NameOfTheBook " + 
"FROM Reservations, Users, Books "+ 
"WHERE userID = " + thisUserID.Text + 
" AND Users.ID = Reservations.userID" 
" AND Books.ID = Reservations.bookID"; 

如果用戶ID是一個文本字段,那麼你就必須把三重引號,而不是單一的,以獲得正確的包裹用戶ID。

+2

如果thisUserID.Text的值始終是一個數字,那麼引用並不重要。此外,總是一個捕獲,我認爲你需要在SQL查詢中使用單引號(你的解決方案使用雙引號 - 儘管正確的軌道!)我認爲這是一個問題,除了引用,因爲另一個用戶張貼在那裏應該真的在這個查詢中使用了一些連接。如果沒有樣本數據很難測試。 – joshhendo

+1

剛剛意識到完全相同的東西,並據此編輯。在不知道什麼數據類型的用戶ID的情況下,沒有什麼可以繼續。 – Fellmeister

+0

我剛更新了帖子。請考慮一下。 – fkr