如何从一个表(具有两列的唯一组合)中选择所有SQL行,而另一个表中没有相同的组合

席琳娜斯(Sylenas)

我在说出我的问题的确切位置时遇到了一些困难,但是我会尽力而为。我正在Visual Studio中使用C#,连接到SQL数据库。

我有一个二手书店数据库,卖家可以在其中输入书籍,然后将书交给我们卖给他们。有三个关键表:

  • 图书(包含我们出售的10本书,每本书都有一个唯一的ISBN标识该图书)
  • 已售出(已售出的所有图书,由该图书的ISBN和原始卖方的ID [Called SSBID]标识)
  • 复制(数据库中曾经存在的所有书籍,包括已售出的书籍。由相同的ISBN和卖方ID [称为SSID]标识)

我们可以假设原始卖方永远不会两次出售同一本书。

当客户来购买一本书时,业务员将通过两个下拉列表查找每本书。第一个DDL填充了系统中每个带有书的ISBN,如下所示。(如果它不存在,则无需列出ISBN!)

SELECT DISTINCT [ISBN] FROM [Copy] ORDER BY [ISBN]

第二个下拉列表应该填充每个正在出售具有相同ISBN的图书的卖家的卖家ID。但是,我们不想列出已售出的任何书籍的卖方ID。下面是对我来说最有意义的选择语句,但我认为逻辑并不完美。

SELECT [SSID] FROM [Copy] WHERE (SSID, ISBN NOT IN (SELECT SSBID, ISBN FROM Sold)) AND ([ISBN] = @ISBN) ORDER BY [SSID]

因此,我们不希望在“复制”和“出售”中提取具有SSID和ISBN相同唯一组合的任何记录,而同时仅显示与我们已经选择的ISBN对应的记录。

第二个查询应该是什么样子?SSID和SSBID具有不同名称的事实会影响查询的功能吗?

为了清楚起见,这是“复制”和“出售”的粗略布局:

复制

- SSID_______ISBN
 - 115________019
 - 115________528
 - 123________528
 - 503________019

- SSBID_____ISBN
 - 115_______019

因此,在我的第一个下拉列表中选择“ 115”后,第二个下拉列表应仅填充“ 528”。

斯科特·汉嫩

如果我理解正确的话,你想加入这两个SoldCopyISBN除非有两个记录Sold ,并 Copy在两个匹配ISBN SSID我可能很遥远,但也许会有所帮助。

SELECT b.ISBN, b.SSID
FROM
    Books b
    JOIN Sold s on b.ISBN = s.ISBN 
    JOIN Copy c on b.ISBN = c.ISBN
    LEFT JOIN Sold s2 on b.ISBN = s2.ISBN and b.SSID = s2.SSID
    LEFT JOIN Copy c2 on b.ISBN = c2.ISBN and b.SSID = c2.SSID
WHERE s2.ISBN is null or c2.ISBN is null

这是打算加入到这两个SoldCopyISBN,但不包括其中的记录Books在这两个领域都表匹配。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查询表中具有一个值但没有另一个值的所有唯一组合

来自分类Dev

从一个表中选择记录,而另一个表中没有两列

来自分类Dev

从表中选择所有行,除了具有相同 id 的另一个表中的行在另一列中具有特定值

来自分类Dev

从一个表中选择所有列,从另一个表中选择 1 列

来自分类Dev

如何从一个表中选择另一个表中没有外键的记录

来自分类Dev

组合 3 个表以生成所有列的唯一组合

来自分类Dev

如何在cakephp 3.6中从一个表中选择所有记录并从另一个表中选择一些记录

来自分类Dev

从一个表中选择所有记录并从另一个表中匹配记录

来自分类Dev

SQL如何从另一个表的所有行中选择用户

来自分类Dev

SQL 查询从另一个表中选择 1 个表和 1 个列(与表 1 中的名称相同)中的所有内容

来自分类Dev

从一个表中选择与另一个表没有关系的表

来自分类Dev

从一个表中选择与SQL的另一个表中的相同值相关联的唯一行对

来自分类Dev

查找具有两列的唯一组合的所有行

来自分类Dev

查找具有两列的唯一组合的所有行

来自分类Dev

从数据框中选择具有多列值的唯一组合的行

来自分类Dev

SQL查询以从一个表中选择所有行,并从表2中选择行

来自分类Dev

SQL:将两个表挂在另一个表的键上,没有所有组合

来自分类Dev

SQLite:从一个表中选择所有具有与不同表中 ID 匹配的 ID 的行

来自分类Dev

SQL-从另一个表中选择两次具有不同值的列

来自分类Dev

如何从一个表中选择数据并将其插入到带有新列的另一个表中

来自分类Dev

如何通过查询另一个表中的数据选择一个表中的所有行

来自分类Dev

如何选择在另一个表中具有全部或没有对应值的行?

来自分类Dev

如何为另一个表中的所有组重复表中的所有行?

来自分类Dev

SQL:选择与另一个表中的内容匹配的所有行

来自分类Dev

如何在另一个表ssms中更新具有相同值的列?

来自分类Dev

如何从一个表中选择在另一表中由于某种条件而在另一表中不存在的所有记录?

来自分类Dev

如何从SQL中的1列返回所有唯一组合?

来自分类Dev

MySQL项目设计-根据另一个选择查询中的行有条件地从一个表中选择

来自分类Dev

SQL查询以从一个表中选择,该表要么不在另一个表中,要么不在该表中具有特定值

Related 相关文章

  1. 1

    查询表中具有一个值但没有另一个值的所有唯一组合

  2. 2

    从一个表中选择记录,而另一个表中没有两列

  3. 3

    从表中选择所有行,除了具有相同 id 的另一个表中的行在另一列中具有特定值

  4. 4

    从一个表中选择所有列,从另一个表中选择 1 列

  5. 5

    如何从一个表中选择另一个表中没有外键的记录

  6. 6

    组合 3 个表以生成所有列的唯一组合

  7. 7

    如何在cakephp 3.6中从一个表中选择所有记录并从另一个表中选择一些记录

  8. 8

    从一个表中选择所有记录并从另一个表中匹配记录

  9. 9

    SQL如何从另一个表的所有行中选择用户

  10. 10

    SQL 查询从另一个表中选择 1 个表和 1 个列(与表 1 中的名称相同)中的所有内容

  11. 11

    从一个表中选择与另一个表没有关系的表

  12. 12

    从一个表中选择与SQL的另一个表中的相同值相关联的唯一行对

  13. 13

    查找具有两列的唯一组合的所有行

  14. 14

    查找具有两列的唯一组合的所有行

  15. 15

    从数据框中选择具有多列值的唯一组合的行

  16. 16

    SQL查询以从一个表中选择所有行,并从表2中选择行

  17. 17

    SQL:将两个表挂在另一个表的键上,没有所有组合

  18. 18

    SQLite:从一个表中选择所有具有与不同表中 ID 匹配的 ID 的行

  19. 19

    SQL-从另一个表中选择两次具有不同值的列

  20. 20

    如何从一个表中选择数据并将其插入到带有新列的另一个表中

  21. 21

    如何通过查询另一个表中的数据选择一个表中的所有行

  22. 22

    如何选择在另一个表中具有全部或没有对应值的行?

  23. 23

    如何为另一个表中的所有组重复表中的所有行?

  24. 24

    SQL:选择与另一个表中的内容匹配的所有行

  25. 25

    如何在另一个表ssms中更新具有相同值的列?

  26. 26

    如何从一个表中选择在另一表中由于某种条件而在另一表中不存在的所有记录?

  27. 27

    如何从SQL中的1列返回所有唯一组合?

  28. 28

    MySQL项目设计-根据另一个选择查询中的行有条件地从一个表中选择

  29. 29

    SQL查询以从一个表中选择,该表要么不在另一个表中,要么不在该表中具有特定值

热门标签

归档