标签: nested-queries

在sql连接或嵌套查询中使用别名总是一个好习惯吗?

使用是否始终是最佳做法 -

Select E.Id,D.DeptName from Employee E join Dept D on E.DeptId=D.Id
Run Code Online (Sandbox Code Playgroud)

代替 -

Select Employee.Id,Dept.DeptName from Employee join Dept on Employee.DeptId=Dept.Id
Run Code Online (Sandbox Code Playgroud)

除了可读性减少查询的长度,使用别名有什么好处?当我咨询我们的数据库专家时,他说查询可能会破坏,如果有时候没有别名 ......我完全不理解......如果有人愿意分享他们的想法以及要遵循的最佳做法,我将不胜感激. .非常感谢.

sql alias join nested-queries

7
推荐指数
2
解决办法
5460
查看次数

如何将第一个查询的输出(有两个值)作为第二个的输入?

我得到2个名字作为第一个查询的输出....例如:paul,peter现在这应该是第二个查询的输入,它必须显示paul和peter的电子邮件ID ....

sql oracle oracle10g nested-queries

7
推荐指数
1
解决办法
2万
查看次数

在给定日期之前获得最大日期的有效方法

假设我有一个名为Transaction的表和另一个名为Price的表.价格保留不同日期的给定资金的价格.每个基金都会在不同的日期添加价格,但他们不会在所有可能的日期都有价格.因此,对于XYZ基金,我可能有5月1日,5月7日和5月13日的价格,基金ABC可能会在5月3日,5月9日和5月11日有价格.

所以现在我正在考虑交易之日基金普遍存在的价格.该交易是在5月10日为XYZ基金进行的.我想要的是当天最新的已知价格,这将是5月7日的价格.

这是代码:

select d.TransactionID, d.FundCode, d.TransactionDate, v.OfferPrice
from Transaction d
    inner join Price v
        on v.FundCode = d.FundCode
        and v.PriceDate = (
            select max(PriceDate)
            from Price
            where FundCode = v.FundCode
            /* */ and PriceDate < d.TransactionDate 
        )
Run Code Online (Sandbox Code Playgroud)

它有效,但速度非常慢(在现实世界中使用几分钟).如果我删除带有前导注释的行,则查询非常快(大约2秒),但它会使用每个基金的最新价格,这是错误的.

不好的是,与我们使用的其他一些表相比,价格表是微不足道的,我不清楚它为什么这么慢.我怀疑违规行迫使SQL Server处理笛卡尔积,但我不知道如何避免它.

我一直希望找到一种更有效的方法来做到这一点,但到目前为止它已经逃过了我.有任何想法吗?

sql-server nested-queries

7
推荐指数
2
解决办法
1万
查看次数

将双嵌套查询转换为JOIN语句以及其他优化

我有这个查询非常具体,并返回我需要的.众所周知,mysql中的嵌套查询在运行时方面可能非常糟糕.如果有人可以帮助我将以下代码转换为JOIN声明,我将非常感激.

当然,欢迎并鼓励任何其他优化.

SELECT title 
FROM   exp_channel_titles 
WHERE  entry_id IN (SELECT rel_child_id 
                    FROM   exp_relationships 
                    WHERE  rel_id IN (SELECT field_id_202 
                                      FROM   exp_channel_data 
                                      WHERE  entry_id = 19971));
Run Code Online (Sandbox Code Playgroud)

谢谢!

mysql sql join nested-queries

7
推荐指数
1
解决办法
1485
查看次数

按DynamoDB中列表的内容过滤/查询

我试图通过List中包含的Map的内容过滤DynamoDB查询.这是我正在处理的结构的一个例子.

{
    'EventType': 'git/push'
    'EventTime': 1416251010,
    'Commits': [
        {
            'id': '29d02aff...',
            'subject': 'Add the thing to the place'
        },
        {
            'id': '9d888fec...',
            'subject': 'Spelling errors'
        },
        ...
    ]
}
Run Code Online (Sandbox Code Playgroud)

散列键是EventType和范围键EventTime.我正在尝试编写一个过滤器,将查询结果过滤到特定的id.是否可以创建一个正确过滤查询的DynamoDB过滤器表达式?(我的第一个想法是使用contains (a, a),但我认为这不适用于地图列表.)

nested-queries nosql amazon-dynamodb

7
推荐指数
1
解决办法
6885
查看次数

带有 where 子句查询的 Eloquent 嵌套关系在 false 条件下返回集合

我正在尝试搜索所有具有 RentItem 且书名类似于给定 $input 的 Rent。

问题是当输入不匹配时,我仍然返回一个集合。唯一的区别是 book 关系为 null 而不是集合。

应返回 false 的查询结果:https : //pastebin.com/pd7UqhCi

查询结果为真:https : //pastebin.com/shndvdMh

当 book 等于 null 时,我不希望返回 Rent 模型。

我的查询

$rents = Rent::with(['rentItems.book' => function ($query) use ($input) { 
       $query->where('books.title', 'LIKE', "%$input%"); 
}])->get();
Run Code Online (Sandbox Code Playgroud)

租模型关系

public function rentItems()
{
  return $this->hasMany(RentItem::class);
}
Run Code Online (Sandbox Code Playgroud)

RentItems 模型关系

public function book()
{
     return $this->belongsTo(Book::class);
}

public function rent()
{
     return $this->belongsTo(Rent::class);
}
Run Code Online (Sandbox Code Playgroud)

我做过的研究:

php collections nested-queries laravel

6
推荐指数
1
解决办法
3701
查看次数

如何优化嵌套查询?

我可以以某种方式连接表并避免在以下MySQL查询中使用distinct.invite_by_id显示邀请此用户的用户ID.

SELECT
    user1.id, count(distinct user2.id) AS theCount, count(distinct user3.id) AS theCount2
FROM
    users AS user1
LEFT OUTER JOIN
    users AS user2 ON user2.invited_by_id=user1.id
LEFT OUTER JOIN (
    SELECT id, invited_by_id FROM users WHERE signup_date >= NOW() - INTERVAL 30 DAY
) AS user3 ON user3.invited_by_id=user1.id
GROUP BY user1.id;
Run Code Online (Sandbox Code Playgroud)

mysql sql nested-queries

5
推荐指数
1
解决办法
426
查看次数

嵌套的MySQL查询

我一直在尝试为公共交通系统编写一个查询,当我输入原点和目的地站号时,它将输出一个路径列表.

这是我的MySQL表:

mysql> desc route_timings;
+----------------+---------+------+-----+---------+----------------+
| Field          | Type    | Null | Key | Default | Extra          |
+----------------+---------+------+-----+---------+----------------+
| ID             | int(11) | NO   | PRI | NULL    | auto_increment |
| route_number   | int(11) | NO   |     | NULL    |                |
| stop_number    | int(11) | NO   |     | NULL    |                |
| arrival_time   | time    | YES  |     | NULL    |                |
| departure_time | time    | YES  |     | NULL    |                |
+----------------+---------+------+-----+---------+----------------+
5 rows …
Run Code Online (Sandbox Code Playgroud)

mysql sql nested-queries

5
推荐指数
1
解决办法
1129
查看次数

nested query performance alternatives

From performance perspective , is this the best way to write the following query concerning the nested query :


SELECT a.meg,a.currency
FROM alt6sal a 
WHERE  a.meg_code IN (1,2)
AND a.sal_year = (SELECT MAX(ia.sal_year) FROM alt6sal ia WHERE a.emp_num = ia.emp_num )
AND a.sal_mon = (SELECT  MAX(ia.sal_mon) FROM alt6sal ia  WHERE a.emp_num = ia.emp_num AND a.sal_year = ia.sal_year)
Run Code Online (Sandbox Code Playgroud)

sql performance informix nested-queries

5
推荐指数
1
解决办法
2196
查看次数

如何进行嵌套查询?

拥有一个表用户,并且有一个字段invite_by_id显示邀请该用户的用户ID.需要使MySQL查询返回包含用户所有字段的行以及invites_count字段,以显示每个用户邀请的人数.像这样的东西:

SELECT
    User.*, Count.count
FROM
    users AS User,
    (
        SELECT COUNT(*) AS count FROM users WHERE users.invited_by_id=User.id
    ) AS Count;
Run Code Online (Sandbox Code Playgroud)

这个没有用,所以我需要一个工作的.

mysql sql nested-queries

4
推荐指数
1
解决办法
5369
查看次数