我有一个带有请求的MySQL表
+--------+-------------+-----+
| req_id | req_name | ... |
+--------+-------------+-----+
| 1 | testrequest | ... |
+--------+-------------+-----+
Run Code Online (Sandbox Code Playgroud)
以及对此类请求进行投票的表格.
+--------+-----------+----------+
| req_id | vote_name | approved |
+--------+-----------+----------+
| 1 | User1 | 1 |
| 1 | User2 | 1 |
| 1 | User3 | 1 |
| 1 | User4 | 0 |
| 1 | User5 | 0 |
+--------+-----------+----------+
Run Code Online (Sandbox Code Playgroud)
我想要的那种观点:
+--------+-------------+---------------------+--------------+
| req_id | req_name | approved_by | rejected_by |
+--------+-------------+---------------------+--------------+
| 1 | testrequest …Run Code Online (Sandbox Code Playgroud) 我有一个有3列的表:
userid mac_address count
Run Code Online (Sandbox Code Playgroud)
一个用户的条目可能如下所示:
57193 001122334455 42
57193 000C6ED211E6 15
57193 FFFFFFFFFFFF 2
Run Code Online (Sandbox Code Playgroud)
我想创建一个视图,只显示那些被认为对这个用户"常用"的MAC.例如,我想过滤掉与该用户最常用的MAC地址相比使用<10%的MAC.此外,我想要每个用户1行.这可以通过GROUP BY,HAVING和GROUP_CONCAT轻松实现:
SELECT userid, GROUP_CONCAT(mac_address SEPARATOR ',') AS macs, count
FROM mactable
GROUP BY userid
HAVING count*10 >= MAX(count)
Run Code Online (Sandbox Code Playgroud)
事实上,结果如下:
57193 001122334455,000C6ED211E6 42
Run Code Online (Sandbox Code Playgroud)
但是我真的不想在我的视图中使用count-column.但是如果我把它从SELECT语句中删除,我会收到以下错误:
#1054 - Unknown column 'count' in 'having clause'
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以执行此操作,而不会被迫在我的视图中有一个令人讨厌的计数列?我知道我可以使用内部查询来做到这一点,但我想避免出于性能原因这样做.
非常感激您的帮忙!
我对Ruby很陌生,但过去两周我一直在做大量的厨师测试研究.这个测试使用了ChefSpec和Fauxhai,但它看起来并不是"ruby-ish",我希望社区可以给我一些关于编码风格的指示.有没有更好的方法来编写这样的嵌套循环?
食谱/富/食谱/ default.rb
package "foo" do
action :install
end
Run Code Online (Sandbox Code Playgroud)
食谱/富/规格/ default_spec.rb
require 'chefspec'
describe 'foo::default' do
platforms = {
"debian" => ['6.0.5'],
"ubuntu" => ['12.04', '10.04'],
"centos" => ['5.8', '6.0', '6.3'],
"redhat" => ['5.8', '6.3'],
"mac_os_x" => ['10.6.8', '10.7.4', '10.8.2'],
"windows" => ['2008R2']
}
platforms.each do |platform,versions|
versions.each do |version|
context "on #{platform} #{version}" do
before do
Fauxhai.mock(platform: platform, version: version)
end
it 'should install foo' do
@runner = ChefSpec::ChefRunner.new.converge('foo::default')
@runner.should install_package 'foo'
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
欢迎任何和所有反馈.谢谢!
我正在尝试创建一个由三部分组成的简单页面导航:
重要的是当前页码始终在父容器中水平居中.其他两个部分应均匀占据剩余的水平空间.
这个JSFiddle说明了我解决这个问题的两次尝试.
解决方案1:使用text-align: center.这实现了期望的结果,但仅在两侧宽度相等的情况下.如果不是,则当前页码不在中心.
HTML
<div class="container">
<input type="button" value="47">
<input type="button" value="48">
<input type="button" value="49">
<input type="text" size="5" maxlength="5" value="50">
<input type="button" value="51">
<input type="button" value="52">
<input type="button" value="53">
</div>
Run Code Online (Sandbox Code Playgroud)
CSS
.container, input {
text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
解决方案2:使用手动指定的宽度均匀分布水平空间.这有效地将当前页码的中心置于所有情况下,但它需要您对宽度进行硬编码.
HTML
<div class="container">
<div class="left">
<input type="button" value="47">
<input type="button" value="48">
<input type="button" value="49">
</div>
<div class="right">
<input type="button" value="51">
<input type="button" value="52">
<input type="button" value="53">
</div>
<div class="center">
<input type="text" …Run Code Online (Sandbox Code Playgroud) 我正在创建一个将存储100.000(以及将来可能更多)用户的数据库.虽然这显然发生在每个用户有1行的表中,但每个用户都可以(并且将会)存储数百个项目.在编程语言中,这意味着用户有2个整数数组(或一个二维数组):itemid的列和金额的列.
我的直觉告诉我创建一个表来保存所有这些项目,其行如(userid,itemid,amount).然而,这将导致一个巨大的表.200.000个用户,每个250个项目......一个表中有5000万个条目.这一点,加上桌子将经历连续快速的变化,让我感到害怕.(速度有多快?我估计每秒最多100次修改.)
通常会有100到2000个用户,包括添加和删除项目以及修改金额.这些操作可以并且将在编程代码中发生.它将如下:
值得注意的是,用户可以存储的项目数量最多.
有没有其他方法可以使用单独的表格?也许将值保存在格式化的文本字符串中?或者这是使用MySQL数据库实际上是一个坏主意™的实例之一?
感谢您的时间和见解.
group-by ×2
sql ×2
alignment ×1
chef-infra ×1
chefspec ×1
css ×1
css3 ×1
database ×1
group-concat ×1
having ×1
html ×1
mysql ×1
performance ×1
rspec ×1
ruby ×1