问题标签 [inner-join]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
37317 浏览

sql-server - 无法在 SQL Server 2008 上绑定多部分标识符

我有 2 张桌子

requests( ID, company_id, amount)

companies( ID, name)

带有 FK 约束 ( requests.company_id-> companies.id)

requests.companyNULL

如果没有指定公司,我需要获取所有请求并替换company_id为适当的公司name或将其留空。

我有下一个查询:

并且它工作正常,直到 NULL 进入company字段。

我试着下一步做:

但是得到了

无法绑定多部分标识符“R.company_id”

ON子句转换中的字段也有同样的错误。我究竟做错了什么?

0 投票
2 回答
279 浏览

mysql - MySQL - 从链接表中获取元素,但只有那些元素

我从链接表中选择并过滤掉多余的结果时遇到问题。

出版物通过package_publications表属于包。

例如,我知道我的出版物的 id 是 11 和 47。我想返回一个只包含这些出版物的包。

现在,如果我进行连接并在明显的内部连接之后执行类似操作,这将简单地返回在package_publications链接表where publications.id IN (11, 47)中具有这些值之一的所有包。

我想匹配只有两个(或更多 - 它不限于两个)的包。实际上,当我想要 AND 但我不知道如何以 SQL 方式处理它时,我正在使用 OR。

0 投票
2 回答
253 浏览

sql - 在 SQL 内部联接中“跳过”表

我的意思是,如果我有以下架构:

如果我想检索B_dataC_data使用此处描述的关系,以下之间是否有任何区别:

和:

我怀疑大多数数据库会将任一查询优化为相同,但是在某些情况下,外键约束tableA会使通过tableA更有效地连接吗?是否存在这些查询可能产生不同结果的情况?

0 投票
4 回答
9849 浏览

linq - 如何在 Linq 中过滤子集合

我需要使用单个 linq 查询过滤 linq 中实体的子元素。这可能吗?

假设我有两个相关的表。诗句和诗句翻译。LINQ to SQL 创建的实体是这样的,我有一个 Verse 对象,其中包含一个子对象,该子对象是 VerseTranslation 的集合。

现在,如果我有以下 linq 查询

我得到一个 id 为 1 的 Verses 集合,每个 verse 对象包含来自 VerseTranslations 的所有子对象。

我还想做的是过滤 Verse Translations 的子列表。

到目前为止,我能够想出的唯一方法是使用新的匿名类型或其他方式。如下

上面的代码有效,但我必须为它声明一个新类。有没有办法以这样的方式做到这一点,即子表的过滤可以合并到第一个 linq 查询中,这样就不必声明新的类。

问候, MAC

0 投票
2 回答
15776 浏览

hibernate - 休眠多对一的hql查询,当内部连接获取属性未关联时

我在 hbm.xml 中设置了这样的多对一关联:

我正在使用仪器来进行真正的延迟加载。

但是,当我使用对另一个表的内部连接提取运行 hql 查询时,应该包含作为另一个表的值的对象的属性保留为空。即使我可以看到另一个表的值对象是由休眠创建的。

有人对这个问题有任何见解吗?

更新:

0 投票
3 回答
8454 浏览

sql - SQL 对单个表执行 INNER JOIN 的替代方法

我有一个大表(TokenFrequency),其中有数百万行。TokenFrequency 表的结构如下:

表 - TokenFrequency

  • id - int,主键
  • 源 - 整数,外键
  • 令牌 - 字符
  • 计数 - 整数

我的目标是选择其中两个来源具有相同标记的所有行。例如,如果我的表看起来像这样:

id --- source --- token --- count
1 ------ 1 --------- dog ------- 1
2 ------ 2 --- ------ 猫 -------- 2
3 ------ 3 --------- 猫 -------- 2
4 ------ 4 --------- 猪 -------- 5
5 ------ 5 --------- 动物园 ------- 1
6 --- --- 5 --------- 猫 -------- 1
7 ------ 5 --------- 猪 -------- 1

我想要一个 SQL 查询来给我源 1、源 2 和计数的总和。例如:

source1 --- source2 --- token --- count
---- 2 ----------- 3 --------- cat -------- 4
- --- 2 ----------- 5 --------- 猫 -------- 3
---- 3 ---------- - 5 --------- 猫 -------- 3
---- 4 ----------- 5 --------- 猪 -- ------ 6

我有一个看起来像这样的查询:

此查询工作正常,但我遇到的问题是:

  1. 我有一个包含数百万行的 TokenFrequency 表,因此需要更快的替代方法来获得此结果。
  2. 我当前的查询是重复的。例如它的选择:
    source1=2, source2=3, token=cat, count=4
    source1=3, source2=2, token=cat, count=4
    这不是太大的问题,但如果有办法消除这些并反过来获得速度增加,那么这将非常有用

我遇到的主要问题是当前查询的查询速度需要数小时才能完成。我认为自己的表上的 INNER JOIN 是问题所在。我确信必须有一种方法来消除内部连接并仅使用 TokenFrequency 表的一个实例来获得类似的结果。我提到的第二个问题也可能会促进查询速度的提高。

我需要一种方法来重组这个查询,以更快、更有效的方式提供相同的结果。

谢谢。

0 投票
1 回答
465 浏览

linq-to-sql - 将存储过程转换为 Linq2SQL(计数、最大值、组、排序依据)

我有两张桌子 (1:N)

和 -

Master.idMaster 和 lnk.idMaster 之间的链接

我有一个 SQL 查询:

我需要将此 T-SQL 查询转换为 Linq-to-SQL 语句,最好在 C# 中

0 投票
2 回答
153 浏览

php - 加入作为多个 OR 的替代方案

我有两个具有以下结构的表:

我想选择仅由 user 的朋友发布的帖子x。我最初的计划是使用以下代码:

但是,这似乎不起作用。(我得到了 x 完成的所有帖子,完成了 X 的朋友完成的所有帖子。我能想到的唯一选择是使用 OR 的(可能很长的)字符串 - 如

任何替代解决方案?谢谢。

0 投票
1 回答
595 浏览

sql - 外连接或动态查询,哪个是最好的方法?

我有以下表格(我已经简化了表格中包含的数据)。

RateExtra 仅包含 3 个值,键的 1、2 和 3 以及名称的汽油附加费、管理费和 GST。

这对于目前的目的来说工作正常。正在显示具有匹配记录的值列表,并且仅针对 rate_extra_name 查询 RateExtra。

所以我可能有以下结果:

  • Ratetable1, 1, 汽油附加费
  • Ratetable1, 2, 管理费
  • Ratetable2, 3, 汽油附加费
  • Ratetable4, 4, GST
  • Ratetable6, 5, 汽油附加费

我被要求对此进行修改,以便现在返回的每条记录都包含 RateExtra 表中每个值的记录。如果没有匹配的记录,那么我的 RateTableExtra 表中的数据应该返回为 NULL。所以我的数据应该返回为:

  • Ratetable1, 1, 汽油附加费
  • Ratetable1, 2, 管理费
  • Ratetable1,NULL,GST
  • Ratetable2, 3, 汽油附加费
  • Ratetable2,NULL,管理费
  • Ratetable2,NULL,消费税
  • Ratetable4, NULL, PetrolSurcharge
  • Ratetable4,NULL,管理费
  • Ratetable4, 4, GST
  • Ratetable6, 5, 汽油附加费
  • Ratetable6, NULL, ManagementFee
  • Ratetable6, NULL, GST

我已经尝试过 OUTER 连接,但我假设它们似乎不起作用,因为 RateExtra 数据链接到将返回 null 的 RateTableExtra。我现在正在考虑创建一个动态查询,该查询将获取我的原始结果集,对其进行迭代检查 rate_extra_id,如果它不在结果集中,则在我需要的带有 NULL 数据的结果中附加一个新行。我假设这会起作用,但我有一种感觉,它会成为性能的杀手。

有没有更好的方法来做到这一点?希望有人可以提供帮助,将不胜感激。

0 投票
1 回答
1335 浏览

join - 将一个表两次右连接到第二个表,每个别名内部连接到第三个表的两个别名

也许我走错了路。这是我正在尝试做的事情和我的问题。

我有 3 张桌子。assets(计算机、网络设备等) ports(计算机上的端口、网络设备等) port_connections(具有 port_id_a 和 port_id_b 字段并将每个端口和每个资产链接在一起)

它实际上只是一种跟踪办公楼中的 vlan 和网络设备/计算机的方法。

我正在使用最新版本的火鸟,使用方言 3。我假设这不是火鸟问题,而只是我的 sql 的问题。

我知道这一定是可能的,因为我可以通过正确的连接(端口到 port_connections)来完成它,并在 WHERE 子句中进行其他连接。问题是当我将资产表连接到端口表时,正确的连接会丢失。

编辑:这是我正在使用的最新查询,因为旧的查询在这一点上是无用的。我对这个最新查询的问题是它似乎将通过 port_connections 表链接的项目拉了两次。所以我会得到正确的 port_connections 记录,然后我会得到一个重复的记录,只有一个没有 port_connection 的端口。我需要以某种方式摆脱这个后来的记录,但仍然保留没有 port_connection 记录的其他端口记录。

表:资产:

端口连接

港口

编辑:解决方法是将 connection_id 移动到端口表中,然后此查询执行我想要的操作。