gpt4 book ai didi

mysql - 异常多对多选择查询的困难

转载 作者:行者123 更新时间:2023-11-29 12:20:23 24 4
gpt4 key购买 nike

我刚刚开始学习MySQL。我已经研究了几个小时,不幸的是我找不到解决方案。我怀疑这很容易,我只是不知道该怎么做。我在这里或其他网站上没有找到类似的情况。

这是一些示例数据

computer
+------------------+
idcomputer | name
1 | komp001
2 | komp002

computer_has_software
+---------------------------------------+
computer_idcomputer | software_idsoftware
1 | 1
1 | 2

software
+------------------+
idsoftware | name
1 | notepad
2 | eclipse
3 | firefox
4 | google chrome

如您所见,komp001 同时安装了记事本和 eclipse。

我想要一个查询来告诉我哪些软件可用,但未安装在 komp001 上 - 即所有软件均未安装在 komp001 上。

我希望答案是 Firefox 和 google chrome。

software
+------------------------+
idsoftware | name
3 | firefox
4 | google chrome

最佳答案

你可以做到这一点。您可以使用CROSS JOIN从软件表中获取所有条目,然后对computer_has_software表进行LEFT JOINWHERE software_idsoftware IS NULL 获取该计算机不存在的软件。

SELECT  s.idsoftware, s.name

FROM computer as c

CROSS JOIN software as s

LEFT JOIN computer_has_software as chs
ON s.idsoftware = chs.software_idsoftware
AND c.idcomputer = chs.computer_idcomputer

WHERE chs.software_idsoftware IS NULL
and c.name = 'komp001';

sqlfiddle

关于mysql - 异常多对多选择查询的困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29109294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com