首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接3表jdbc

连接3表jdbc
EN

Stack Overflow用户
提问于 2018-06-17 13:58:51
回答 2查看 558关注 0票数 0

我有三张桌子的连接问题。我有以下表格:

代码语言:javascript
复制
Wishlists (id, user_id, itinerary_id)
Itineraries (id, name, image_id)
Images (id, name)

从wishlist表开始,我将返回分配给日程的图像。我该怎么做?

代码语言:javascript
复制
String sql = "SELECT w.*, it.*, img.* "
                + "FROM wishlists w "
                + "INNER JOIN itineraries it ON wishlists.itinerary_id = itineraries.itinerary_id "
                + "INNER JOIN images img ON itineraries.image_id = images.image_id"
                + "WHERE user_id = ?";
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-17 14:08:14

您应该在这里使用准备好的语句:

代码语言:javascript
复制
String sql = "SELECT img.name FROM wishlists w ";
sql += "INNER JOIN itineraries it ON w.itinerary_id = it.id ";
sql += "INNER JOIN images img ON it.image_id = img.id ";
sql += "WHERE w.user_id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, 100);    // for user_id = 100, for example
ResultSet rs = ps.executeQuery();
while (rs.next()) {
    String imageName = rs.getString("name");
    System.out.println("Found an image: " + imageName);
}
票数 0
EN

Stack Overflow用户

发布于 2018-06-17 14:02:11

您可能需要一个如下所示的查询:

代码语言:javascript
复制
SELECT . . .   -- explicitly list the columns
FROM wishlists w INNER JOIN
     itineraries it
     ON w.itinerary_id = i.itinerary_id INNER JOIN
     images img
     ON it.image_id = img.image_id
WHERE <what table ???>.user_id = ?;

备注:

  • 定义表别名后,请将它们用于限定列名。
  • 标识来自user_id的表。
  • 列出要检索的所有列。您有重复的列名,所以*是一个特别糟糕的主意。
  • 您的查询版本还遗漏了where之前的一个空格;这可能只是一个错误。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50897353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档