标签: join

优化SQL查询

我有查询需要40秒才能执行,我想知道如何让它更快......

SELECT rp.`id` as rip,r.`id`, 
  rl.`id` as rlid, r.`number`, r.`type`, 
  a.`title` as atitle, a.`id` as aid, more, 
  more_valid 
FROM 
  `R_l_p` rp INNER JOIN 
  `Rl` rl ON rp.`rl_id` = rl.`id` INNER JOIN 
  `R` r ON r.`id` = rl.`r_id` INNER JOIN 
  `A` a ON a.`id` = r.`a_id` 
  LEFT JOIN 
   (SELECT `type`, `v`, `r_id`, COUNT(*) AS more 
    FROM `R_l` 
    WHERE `type` = 'stream' AND `v` = 1 
    GROUP BY `r_id`) stm ON stm.`r_id` = r.`id`
  LEFT JOIN 
   (SELECT `type`, `v`, `r_id`, COUNT(*) AS …
Run Code Online (Sandbox Code Playgroud)

mysql sql performance time join

0
推荐指数
1
解决办法
79
查看次数

如何在Rails中的联接表上调用方法?

我正在尝试为频繁运行的查询(即有错误的用户)创建范围。问题是我必须加入用户表和帐户表,然后在帐户表上运行方法以找出哪个用户有错误。换句话说,我需要找到具有错误帐户的用户。我可以像这样在帐户模型上创建此范围:

scope :with_errors -> {joins(:user).map(&:status).select{|status| status['code'] == :error}}
Run Code Online (Sandbox Code Playgroud)

问题是,我必须在Account上定义此范围,因为这样我就可以map(&:status)在从联接返回的ActiveRecord :: Relation上运行。因此,我的问题是:是否可以在“联接”表上运行方法,以便在用户模型上定义此范围?

谢谢!

scope join ruby-on-rails relation

0
推荐指数
1
解决办法
922
查看次数

Sql Join和Sum

我试图使用左连接从两个不同的表中总计一个数量.无论第二个表是否匹配,我都需要返回所有行.

   SELECT l.tender, 
          l.starting+SUM(t.amount) AS 'amount' 
     FROM label l 
LEFT JOIN transfers t on l.tender=t.name 
 ORDER BY l.tender
Run Code Online (Sandbox Code Playgroud)

sql join

0
推荐指数
1
解决办法
54
查看次数

在ruby中更好地替换join()和split()

我有一个字符串数组的数组.

它看起来像这样:

big_array = Array.new
big_array[0] = ["aib","ulster","anglo","hsbc"]
big_array[1] = ["ulster","hdfc","citibank"]
big_array[2] = ["aib", "citibank"]
Run Code Online (Sandbox Code Playgroud)

现在,由此,我想创建另一个包含银行名称的数组.我知道如何做到这一点的唯一方法是.

big_array.join(" ").split(" ").uniq
Run Code Online (Sandbox Code Playgroud)

现在,这适用于少量数据.但是如果big_array的索引达到1000s那会怎么样呢.似乎不是最好的方法.有没有更好的方法来实现这个?

PS我刚刚给出了一个我正在尝试做的例子.不是实际的代码.只想要一个更优雅的解决方案.

ruby arrays join

0
推荐指数
1
解决办法
775
查看次数

Rails 4 ActiveRecord - 如何查看如何解释数据库查询?

我有这些模型:

老师

class Teacher < ActiveRecord::Base
  has_many :days
end
Run Code Online (Sandbox Code Playgroud)

class Day < ActiveRecord::Base
  belongs_to :teacher
end
Run Code Online (Sandbox Code Playgroud)

并运行这些查询:

  active_teachers = Teacher.joins(:days).where("teacher.id" => found_teachers.pluck(:teacher_id).uniq, "days.day_name" => selected_day)
Run Code Online (Sandbox Code Playgroud)

查询(应该)的作用是:found_teachers所有具有重复的教师的数组,删除双重性并仅选择那些在相应日期具有类的教师(例如selected_day,包含字符串Monday).

因为变量中的数据量active_teachers是如此之大,以至于我无法手动记录记录(我不确定我是否正确地构建了这个查询,它确实完全符合我的要求),我试图找出它是怎么回事此查询从ActiveRecord转换为SQL.

通常我会在终端中看到Rails应用程序运行服务器的所有内容,但截至目前,我没有看到此查询说明.

所以问题是,我怎样才能看到ActiveRecord查询如何转换为SQL?

先感谢您.

ruby mysql join ruby-on-rails rails-activerecord

0
推荐指数
1
解决办法
47
查看次数

两次加入同一张桌子

我正在尝试在表格中列出一些数据.数据来自数据库,我的数据库中有3个表.

我试图在这样的SQL语句中加入这三个三个表:

SELECT * FROM cases
LEFT JOIN users ON cases.fk_supporter = users.user_id
LEFT JOIN users ON cases.fk_creator = users.user_id
Run Code Online (Sandbox Code Playgroud)

fk_supporter是用户的外键,因此是fk_creatorto,但不是同一个用户.怎么做到这一点?

mysql sql select alias join

0
推荐指数
1
解决办法
73
查看次数

SQL SELECT名称由id

我需要有关sql查询的帮助.

我有这两个表:

player_locations:

ID |  playerid  | location <- unqiue key
---|-----------------------
 1 |    1       | DOWNTOWN
Run Code Online (Sandbox Code Playgroud)

users:

ID  | playername | [..]
----|--------------------
 1  | example1   | ...
Run Code Online (Sandbox Code Playgroud)

我需要一个选择,以获得users.playernameplayer_locations.playerid.我有独特的地理位置player_locations.playerid.

伪查询:

SELECT playername 
FROM users
WHERE id = player_locations.playerid 
  AND player_locations.location = "DOWNTOWN";
Run Code Online (Sandbox Code Playgroud)

输出应该是example1.

mysql sql select join

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

寻找使用PHP和MySQL存储表的更好方法

我是PHP和MySQL的新手,需要帮助解决我面临的问题.我正在尝试创建一个比以下更清洁的表:

表格示例

项目|部分|数量

Item1 | 123 | 2

第1项| 124 | 2

第2项| 123 | 1

第2项| 125 | 3

我可以使用普通表执行此操作,但我可以设想数据库具有大量具有重复数据的重复行.例如,我多次使用Item1来识别每个部分.

我想知道是否有更简洁的方法将这些数据存储在我的数据库中?我将使用PHP将数据存储到MySQL中.我也希望使Item列唯一,但就目前而言,不能这样做.

我查看了序列化,连接以及数组,但我无法弄清楚如何使它完全适合所以我想我会问这里.最终结果将是PHP报告,其中说:

第1项使用以下部分

第123部分:数量2

第124部分:数量2

第2项使用以下部分

第123部分:数量1

第125部分:数量3

任何帮助将不胜感激.

php mysql serialization join

0
推荐指数
1
解决办法
74
查看次数

C#将2 Int16连接到Int32

因为我认为应该是一个简单的解决方案,我遇到了一个死胡同.基本上,我有:

List<Uint16> header = new List<UInt16>();
Run Code Online (Sandbox Code Playgroud)

然后我用数据填充它,但后来我需要将几个元素加入到Int32中,我不知道最好的方法是什么.是否有任何.NET调用可以将这两个连接到Uint32?

谢谢

c# integer join

0
推荐指数
1
解决办法
1935
查看次数

更好地编写内部联接的方法?

我应该使用哪种方法?

这个

Select * from table1,table2 where table1.id=table2.id;
Run Code Online (Sandbox Code Playgroud)

要么

Select * from table1 inner join table2 on table1.id=table2.id;
Run Code Online (Sandbox Code Playgroud)

注意: Id是foriegn Key.

sql join inner-join

0
推荐指数
1
解决办法
57
查看次数