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

我附上了我的问题的一个图像:

在此处输入图像描述

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

你可以这样做(没有加入):

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 / )

您需要正确加入表格。
像这样:

 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,则所有结果都将消失…

并检查你的拼写。
你是在写星期四而不是星期四和magzine而不是杂志……

PS:customer_id来自哪里?

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

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

如果表是相关的,你必须使用JOIN :让我们看一个例子(我不知道你的表字段,所以我将发明一个自定义的例子)。 想想人和pet桌; person表可以包含以下字段:

 Person (personID, first_name, last_name, age) 

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

 Pet (petID, name, age, personID) 

pet表中的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只是一个连接类型(有几种连接方法)。 在这里您可以找到有关这些问题的一些文档 。

你需要使用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])

你可以发表你的表的架构吗?