具有多个表的多列的SELECT查询

时间:2014-06-24 07:54:28

标签: java sql join

我附上了我的问题的一张图片:

enter image description here

  1. 在测试jFrame jTextField时,我将插入客户ID,然后在按下ok按钮查询后将选择并收集与该客户相关的信息。然后它将显示在jTableModel中。
  2. 我附上了我的数据库图片。
  3. 错误是“无法执行SQL代码”。

5 个答案:

答案 0 :(得分: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来自哪里?

答案 1 :(得分: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/

答案 2 :(得分:1)

使用连接从多个表中选择多个列。请参阅this以了解有关加入和加入示例的信息。

注意:两个表之间应该有一个公共字段来执行连接操作

答案 3 :(得分:1)

您需要使用Join子句(... FROM papers JOIN papers_rate ON papers.[id_column] = papers_rate.[foreign_key])或使用equi-join (replace JOIN...ON clause with a condition in the WHERE clause) (... FROM papers,papers_rate WHERE papers.[id] == papers_rate.[foreign_key])

您能否发布表格的架构?

答案 4 :(得分:1)

如果表格相关,则必须使用JOIN:让我们看一个示例(我不知道您的表字段,因此我将发明一个自定义示例)。考虑personpet表; person表可以包含以下字段:

Person (personID, first_name, last_name, age)

pet表可以包含以下其他字段:

Pet (petID, name, age, personID)

personID表格中的pet字段标识了宠物的所有者。这是一个简单的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