繁体   English   中英

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

[英]SQL query to get all records based on a certain column value

我得到了下表:

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

我需要以下信息:

  1. 存在多少种不同的替代方案->填充HTML
    选择带有其选项的框。

在这里,我们有2个选择。 因此,我将用替代方案1和替代方案2填充选择框。然后,当用户选择一个替代方案时,我需要根据该替代方案在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,而不返回整个记录。

您无法通过单个查询来执行此操作。 使用两个查询。 一个用于获取不同的选择,而另一个用于获取每个选择的选项。

$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
    }
}

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

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

如果您只在寻找特定ID,客户或data_1的替代项,则还可以在查询中添加WHERE子句。

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

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

在此处输入图片说明

您要计算备选方案,因此请使用count(distinct)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM