【问题标题】:Joining too tables on separate IDs from another table从另一个表中加入不同 ID 上的表
【发布时间】:2023-03-22 23:35:01
【问题描述】:

我有一个数据库,其中包含作者姓名、名字、姓氏和带有售价的书名。

我尝试创建一个查询,该查询将提取价格低于 15.60 美元的书籍的作者姓氏和名字,并且仅按该顺序显示姓氏和名字,而没有任何重复的姓氏记录。

列 - au_lname、au_fname、价格 表格 - 作者、标题

这就是我目前所拥有的......

SELECT DISTINCT au_lname, au_fname
FROM authors, titles, titleauthor
JOIN authors ON titleauthor.au_id = authors.au_id
 JOIN titles ON titleauthor.title_id = titles.title_id
WHERE price < 15.60
ORDER BY au_lname DESC

“titleauthor”表有一个名为“au_id”的键(也在“authors”表中)和一个名为“title_id”的键(也在“titles”表中) 这是我要加入他们的地方吗?如果是这样,我该怎么做?

这是数据库的 SQL 文件 https://drive.google.com/open?id=1Nzkg6T8VbgDL-xC282uNZ5coUD5bdFy-

[![查询结果][1]][1]

【问题讨论】:

  • 没有重复的姓氏?如果有两个不同的作者姓氏相同,你想做什么?只显示其中一个?

标签: sql


【解决方案1】:

首先,您的表之间需要一个JOIN 条件。不清楚应该是什么。

其次,您只需从SELECT 中删除price

SELECT DISTINCT au_lname, au_fname
FROM authors a JOIN
     titles t
     ON a.? = t.?   -- surely there is a `JOIN` condition
WHERE t.price < 15.60
ORDER BY au_lname DESC

【讨论】:

    【解决方案2】:

    我想通了……

    我的 JOIN 语法不正确

    SELECT DISTINCT au_lname, au_fname
    FROM authors
    JOIN titleauthor ON titleauthor.au_id = authors.au_id
     JOIN titles ON titleauthor.title_id = titles.title_id
    WHERE price < 15.60
    ORDER BY au_lname DESC
    

    。 . . .

    【讨论】:

      猜你喜欢
      • 2014-06-05
      • 2021-07-23
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多