如何 INNER JOIN 4 个表?

新手上路,请多包涵

我必须创建一个将数据库连接到 java gui 的地址簿应用程序。我现在正在研究我的搜索按钮,几乎得到它,但无法弄清楚如何连接所有四个表。我需要按姓氏搜索,然后我希望它显示该人的所有相关信息。

在此处输入图像描述

到目前为止,这就是我所拥有的,它似乎正在工作,但是当我尝试 INNER JOIN emailAddresses 和 phoneNumbers 时,我得到一个语法错误。

 resultSet =
    statement.executeQuery( "SELECT * FROM names INNER JOIN addresses ON names.personID = addresses.personID WHERE lastName LIKE '%" + last + "%' ");
            resultSet.next();
            jTextField1.setText(resultSet.getString("firstName"));
            jTextField2.setText(resultSet.getString("lastName"));
            jTextField3.setText(resultSet.getString("address1"));
            jTextField4.setText(resultSet.getString("address2"));
            jTextField5.setText(resultSet.getString("city"));
            jTextField6.setText(resultSet.getString("state"));
            jTextField7.setText(resultSet.getString("zipcode"));
            jTextField8.setText(resultSet.getString("phoneNumber"));
            jTextField9.setText(resultSet.getString("emailAddress"));

原文由 Mrs.Brightside 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 672
2 个回答

您需要添加括号并使用 * 而不是 % 作为通配符。

我没有测试过,但这应该有效:

 "SELECT     *
FROM    ((names INNER JOIN addresses ON names.personID = addresses.personID)
                INNER JOIN emailadresses ON names.personID = emailadresses.PersonID)
                INNER JOIN PhoneNumbers ON names.PersonID = PhoneNumbers.PersonID
WHERE   lastName LIKE '*" & last & "*'"

说它应该有效 - 请记住以任何姓氏逃避撇号。

转义 ‘ 在 Access SQL 中

原文由 Darren Bartrup-Cook 发布,翻译遵循 CC BY-SA 3.0 许可协议

试试这个 SQL 命令,连接四个表和连接一个表或连接多个表是一样的:

SELECT firstName, lastName, address1, address2, city, state, zipcode, phoneNumber, emailAddress FROM names INNER JOIN addresses ON names.personID = addresses.personID INNER JOIN emailadresses ON names.personID = emailadresses.PersonID INNER JOIN PhoneNumbers ON names.PersonID = PhoneNumbers.PersonID WHERE lastName LIKE '%parameter%'

原文由 Zeina 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进