多列查詢我重視我的問題的一個形象:選擇具有多個表
- 在測試中的JFrame JTextField中我將輸入客戶ID,然後按OK按鈕查詢後,將選擇和收集信息與該客戶相關。然後它將顯示在jTableModel中。
- 我附上我的數據庫圖像。
- 錯誤是「SQL代碼無法執行」。
多列查詢我重視我的問題的一個形象:選擇具有多個表
使用連接從多個表中選擇多個列。請參閱this以瞭解有關聯接和聯接示例的信息。
注:應該有兩個表之間的公共領域進行聯合運算
您需要可以使用Join子句(... FROM papers JOIN papers_rate ON papers.[id_column] = papers_rate.[foreign_key])
或使用等值連接(replace JOIN...ON clause with a condition in the WHERE clause) (... FROM papers,papers_rate WHERE papers.[id] == papers_rate.[foreign_key])
可否請你發佈你的表的模式?
您需要正確加入表格。
像這樣:
SELECT
paper_list,monday,tuesday,wednesday,thrsday,friday,saturday,sunday,magzine_name,rate
FROM papers
LEFT JOIN papers_rate
ON papers_rate.paperId = papers.id
LEFT JOIN magzines
ON magzines.paperId = papers.id
LEFT JOIN magzines_rate
ON magzines_rate.magazineId = magzines.id
WHERE customer_id = ?"
如果內部聯接,如果你沒有例如magazine_rate所有結果都會煙消雲散......
並檢查拼寫。
你寫了thrsday而不是週四MAGZINE而不是雜誌...
PS:還有哪裏CUSTOMER_ID從何而來?
我會手動輸入它 – Devendra
你可以這樣做(沒有加入):
SELECT papers.paper_list,papers_rate.monday,papers_rate.tuesday,
papers_rate.wednesday,papers_rate.thrsday,papers_rate.friday,
papers_rate.saturday,papers_rate.sunday,magzines.magzine_name,magzines_rate.rate
FROM papers,papers_rate,magzines,magzines_rate
WHERE example_table.customer_id = ? AND other conditions"
這句法是,實際上,一個簡單的INNER JOIN。有些數據庫將其與明確的JOIN完全相同。 WHERE子句告訴哪些字段關聯數據庫,並返回結果,就像列出合併爲基於所提供的條件,一個表的表。(http://www.techrepublic.com/article/sql-basics-query-multiple-tables/)
它不能正常工作@ Zahid Khan – Devendra
@Devendra我編輯了你的問題,所以如果表格是相關的,你必須使用連接。 –
如果表是相關的,你必須使用JOIN
:讓我們看一個例子(我不知道你的表格字段,所以我會發明一個自定義的例子)。考慮一下person
和pet
表;所述person
表可以包含以下字段:
Person (personID, first_name, last_name, age)
的pet
表可以包含這些字段:
Pet (petID, name, age, personID)
在pet
表中的personID
字段識別寵物的所有者。這是一個簡單的1:N關係。要從這兩個表中選擇一些值,您必須執行以下操作:
SELECT Person.first_name, Person.last_name, Pet.name
FROM Person INNER JOIN Pet ON
Person.personID = Pet.personID
WHERE Person.age > 30
這只是一個例子,很清楚。而INNER JOIN
只是一個連接類型(有幾種連接方法)。 Here you can find some documentation concerning these issues。
連接在哪裏? – PaolaG
我不知道加入query.Sorry – Devendra
但是這些表格是相關的嗎?或者他們完全不相關? – superpuccio