SQL查询以基于特定列值获取所有记录

时间:2014-05-02 11:48:29

标签: php mysql ajax json

我得到了下表:

+---------+--------+---------+--------------+
|  ID     | Data 1 |Customer | Alternative  |
+---------+--------+---------+--------------+
| 1       |1abc    | 1       |1             |
+---------+--------+---------+--------------+
| 2       |2abc    | 1       |1             |
+---------+--------+---------+--------------+
| 3       |ae12    | 1       |2             |
+---------+--------+---------+--------------+
| 4       |ad31    | 1       |2             |
+---------+--------+---------+--------------+
| ...     |...     | ...     |...           |
+---------+--------+---------+--------------+

我需要以下信息:

  1. 确实存在多少种不同的替代方案 - >填充HTML
    选择包含其选项的框。
  2. 这里有2个替代品。因此,我将使用备选方案1和备选方案2填充我的选择框。 然后,当用户选择一个Alternative时,我需要在JSON数组中基于该替代编写所有记录。

    例如:

    用户选择备选方案1

    [1;1abc;1;1],[2;2abc;1;1]
    

    或者用户选择备选方案2

    [3;ae12;1;2],[4;ad31;1;2]
    

    我试过

    $result = mysql_query("SELECT DISTINCT Alternative from $table)
    

    但是这只返回1和2而不是整个记录。

4 个答案:

答案 0 :(得分:1)

单个查询无法执行此操作。使用两个查询。一个用于获取不同的备选方案,另一个用于获取每个备选方案的选项。

$result = mysql_query("SELECT DISTINCT Alternative FROM $table");
while ( $row = mysql_fetch_array( $result ) ) {
    $alt = $row['Alternative'];
    $res2 = mysql_query("SELECT * FROM $table WHERE Alternative = '$alt'");
    while( $row2 = mysql_fetch_array( $res2 ) ) {
        //put your HTML here
    }
}

答案 1 :(得分:1)

这可以通过相当简单的方式完成。

$query = "SELECT DISTINCT(alternative), id, data_1, customer 
          FROM table"
$result_set = mysql_query($query,$connection);
$count = mysql_num_rows($result_set);

如果您只查找特定id,customer或data_1的替代项,也可以向查询添加WHERE子句。

答案 2 :(得分:1)

根据我对所需输出的理解;您可以使用以下查询:

SELECT GROUP_CONCAT(  "[", ID,  ";", Data,  ";",  "Customer",  ";", Alternative,  "]" ) 
FROM test
GROUP BY alternative

enter image description here

答案 3 :(得分:0)

您想要计算替代方案,因此请使用count(distinct)

SELECT COUNT(DISTINCT Alternative) as NumAlternatives
FROM $table;