小编Rap*_*sey的帖子

MySQL GROUP_CONCAT中的条件

我有一个带有请求的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)

mysql group-by group-concat

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

SQL具有不在SELECT中的列

我有一个有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)

有没有什么方法可以执行此操作,而不会被迫在我的视图中有一个令人讨厌的计数列?我知道我可以使用内部查询来做到这一点,但我想避免出于性能原因这样做.

非常感激您的帮忙!

sql group-by having

8
推荐指数
1
解决办法
8522
查看次数

关于Ruby/ChefSpec编码风格的反馈

我对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)

欢迎任何和所有反馈.谢谢!

ruby rspec chef-infra chefspec

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

CSS:如何围绕居中元素对齐元素?

我正在尝试创建一个由三部分组成的简单页面导航:

  1. 一些以前的页码(如果有的话)
  2. 当前页码(必须居中)
  3. 一些即将到来的页码(如果有的话)

重要的是当前页码始终在父容器中水平居中.其他两个部分应均匀占据剩余的水平空间.

这个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)

html css alignment css3

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

在数据库中存储整数数组

我正在创建一个将存储100.000(以及将来可能更多)用户的数据库.虽然这显然发生在每个用户有1行的表中,但每个用户都可以(并且将会)存储数百个项目.在编程语言中,这意味着用户有2个整数数组(或一个二维数组):itemid的列和金额的列.

我的直觉告诉我创建一个表来保存所有这些项目,其行如(userid,itemid,amount).然而,这将导致一个巨大的表.200.000个用户,每个250个项目......一个表中有5000万个条目.这一点,加上桌子将经历连续快速的变化,让我感到害怕.(速度有多快?我估计每秒最多100次修改.)

通常会有100到2000个用户,包括添加和删除项目以及修改金额.这些操作可以并且将在编程代码中发生.它将如下:

  • 用户启动会话,程序从数据库加载所有用户项
  • 用户修改项目列表
  • 每隔几分钟,更改将保存到数据库中
  • 当用户结束会话时,它也会保存到数据库中

值得注意的是,用户可以存储的项目数量最多.

有没有其他方法可以使用单独的表格?也许将值保存在格式化的文本字符串中?或者这是使用MySQL数据库实际上是一个坏主意™的实例之一?

感谢您的时间和见解.

sql database performance

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