sql从查询结果中获取项目数

时间:2017-06-22 15:46:04

标签: javascript php sql

我正在查询我的数据库抓取其中的所有信息但是,我要做的是抓住所有连续“x”的条目并将它们分组,然后获取所有具有'y'的条目'连续并将它们分组。

我理想地尝试将每个数字月份值映射到javascript按钮。当您单击“第1个月”按钮时,您将获得分组显示在javascript表中的所有第1个月条目,以及有多少条目的计数。然后表格将循环显示条目并在屏幕上打印。

我正在用这句话抓住条目

$myresult = customfunction($getCred, "Select * From Test_Data");

月份列的名称是NumericMonths,(整数) 例如,假设我想将所有“月份”分组 这是我设置的javascript表

<div class="container">
<ul class="nav nav-pills">
<li class="active"><a data-toggle="pill" href="#Month1">Month 1(this is where the count of items should go)</a></li>
<li ><a data-toggle="pill" href="#Month2">Month 2(this is where the count of items should go)</a></li>
<li><a data-toggle="pill" href="#Month3">Month 3(this is where the count of items should go)</a></li>
<li><a data-toggle="pill" href="#Month4">Month 4(this is where the count of items should go)</a></li>
<li><a data-toggle="pill" href="#Month5">Month 5(this is where the count of items should go)</a></li>
<li><a data-toggle="pill" href="#Month6">Month 6(this is where the count of items should go)</a></li>
<li><a data-toggle="pill" href="#Month7">Month 7(this is where the count of items should go)</a></li>

然后我想循环内容,具体取决于使用循环选择的按钮

while ($row = custom_fetch_array($res)){

#My code here to generate a table such as $row["Name"] etc etc

};

2 个答案:

答案 0 :(得分:0)

这将为您提供两列,即rows_per_month包含一个月的项目数,NumericMonths包含月份数。结果中最多有12行。

class Example {

    @Test
    public void workingTest() {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("testPU");
        EntityManager em = emf.createEntityManager();

        // Creating three states
        State alabama = new State(state: 'Alabama');
        State louisiana = new State(state: 'Louisiana');
        State texas = new State(state: 'Texas');
        em.getTransaction().begin();
        em.persist(alabama);
        em.persist(louisiana);
        em.persist(texas);
        em.getTransaction().commit();

        List<State> states = em.createQuery('FROM State').getResultList();

        // Assert only three states on DB
        assert states.size() == 3;

        User userFromAlabama = new User();
        User userFromAlabamaAndTexas = new User();

        em.getTransaction().begin();
        State alabamaFromDB = em.find(State, alabama.getId());
        State texasFromDB = em.find(State, texas.getId());
        userFromAlabama.getStates().add(alabamaFromDB);
        userFromAlabamaAndTexas.getStates().add(alabamaFromDB);
        userFromAlabamaAndTexas.getStates().add(texasFromDB);

        em.persist(userFromAlabama);
        em.persist(userFromAlabamaAndTexas);
        em.getTransaction().commit();

        states = em.createQuery('FROM State').getResultList();

        // Assert only three states on DB again
        assert states.size() == 3;

        // Assert one user
        User userFromDB = em.find(User, userFromAlabama.getId());
        assert userFromDB.getStates().size() == 1;

        userFromDB = em.find(User, userFromAlabamaAndTexas.getId());
        assert userFromDB.getStates().size() == 2;
    }
}

@Entity
@Table(name="tbl_users")
class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id

    @Column(name="user_name")
    private String name

    @ManyToMany
    private Collection<State> states = Lists.newArrayList()

    // Getters and setters
}

@Entity
@Table(name="tbl_states")
class State {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name="state")
    private String state;
    // Getters and setters
}

获取请求月份的行:

 Select count(*) as rows_per_month, NumericMonths  From Test_Data group by NumericMonths

答案 1 :(得分:0)

好吧,弄清楚你的设置是什么有点棘手但是从来没有那么简单。 老实说,让你的PHP更容易生活。

所以使用一些SQL来计算

SELECT COUNT(1) FROM Test_Data WHERE NumbericMonths = 1; 

如果有很多,那么这将更容易。

第2步 - 数据。

我会做这样的事情。 (psudo代码)

$array = [];

$query = "SELECT * FROM Test_data "

foreach($row in $results) {
    $array[$row[month]] = $array[$row[month]] . '<tr><td>'.$row['something'].'</td></tr>';
}

 foreach($a in $array) {
       echo $a
}

这很简单,而且我不确定我是否已经正确地完成了这个问题 - 因为我已经完成了PHP,但我的想法已经存在了。