Java 选择“使用多个表查询多个列”

Java 选择“使用多个表查询多个列”,java,sql,join,Java,Sql,Join,我附上我的问题的一张图片: 在测试jFrame jTextField时,我将插入客户id,然后在按下ok按钮后,query将选择并收集与该客户相关的信息。然后它将显示在jTableModel中 我附加我的数据库图像 错误为“无法执行SQL代码” 使用联接从多个表中选择多列。有关连接示例,请参阅了解连接和 注意:两个表之间应该有一个公共字段来执行联接操作您需要使用联接子句(…从纸张联接纸张比率。[id\u列]=纸张比率。[foreign\u键]])或使用相等联接(用WHERE子句中的条件替换联接

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

  • 在测试jFrame jTextField时,我将插入客户id,然后在按下ok按钮后,query将选择并收集与该客户相关的信息。然后它将显示在jTableModel中
  • 我附加我的数据库图像
  • 错误为“无法执行SQL代码”

  • 使用联接从多个表中选择多列。有关连接示例,请参阅了解连接和


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

    您需要使用联接子句
    (…从纸张联接纸张比率。[id\u列]=纸张比率。[foreign\u键]])
    或使用相等联接
    (用WHERE子句中的条件替换联接…ON子句)(…来自论文,论文率,其中论文。[id]==论文率。[foreign\u 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 = ?"
    
    如果你做一个内部连接,你的所有结果都会消失,如果你没有一个杂志的价格,例如

    并检查您的拼写。
    你今天写的不是星期四,而是杂志,而不是杂志

    PS:客户id来自哪里?

    您可以这样做(无需加入):

    实际上,此语法是一个简单的内部联接。某些数据库将其视为完全相同的显式联接。WHERE子句告诉数据库要关联哪些字段,并返回结果,就好像列出的表是根据提供的条件合并到单个表中一样。()


    如果表是相关的,则必须使用
    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
    

    显然,这只是一个示例。
    内部连接
    只是一种连接类型(有几种连接方法)..

    我不知道联接查询。Sorry但是表本身是相关的?或者它们完全不相关?与某个列相互关联..关于SQL联接的教程可能会有所帮助:@Devendra好的,这是常见的情况。我为此编写了一个简单的示例。@Devendra你已经编辑了你的问题,所以如果表是相关的,你必须使用联接。
    SELECT Person.first_name, Person.last_name, Pet.name
    FROM Person INNER JOIN Pet ON
    Person.personID = Pet.personID
    WHERE Person.age > 30