2014-06-24 209 views
0

多列查詢我重視我的問題的一個形象:選擇具有多個表

enter image description here

  1. 在測試中的JFrame JTextField中我將輸入客戶ID,然後按OK按鈕查詢後,將選擇和收集信息與該客戶相關。然後它將顯示在jTableModel中。
  2. 我附上我的數據庫圖像。
  3. 錯誤是「SQL代碼無法執行」。
+0

連接在哪裏? – PaolaG

+0

我不知道加入query.Sorry – Devendra

+0

但是這些表格是相關的嗎?或者他們完全不相關? – superpuccio

回答

1

使用連接從多個表中選擇多個列。請參閱this以瞭解有關聯接和聯接示例的信息。

注:應該有兩個表之間的公共領域進行聯合運算

1

您需要可以使用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])

可否請你發佈你的表的模式?

2

您需要正確加入表格。
像這樣:

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從何而來?

+0

我會手動輸入它 – Devendra

2

你可以這樣做(沒有加入):

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/

+0

它不能正常工作@ Zahid Khan – Devendra

+0

@Devendra我編輯了你的問題,所以如果表格是相關的,你必須使用連接。 –

1

如果表是相關的,你必須使用JOIN :讓我們看一個例子(我不知道你的表格字段,所以我會發明一個自定義的例子)。考慮一下personpet表;所述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