MySQL / PHP仅选择多列中的唯一值并将它们放入单独的数组中

时间:2010-10-14 17:57:27

标签: php mysql arrays

使用PHP和MySQL我试图从表中的多个列中选择唯一值(但不是表中的所有列),并将每个列中的所有唯一值放在其自己的数组中。每个列值的唯一性应仅与同一列中的其他值进行比较。

下面的代码将来自$ make_array中所有列的所有唯一值放入所有其余数组中的空值。

如何从这些列中仅选择唯一值并将每个列值放在自己的数组中?

$sql = "
    (SELECT make FROM items)
    UNION
    (SELECT model FROM items)
    UNION
    (SELECT year FROM items)
    UNION
    (SELECT month FROM items)
    UNION
    (SELECT day FROM items)
    UNION
    (SELECT hour FROM items)";

$result = @mysql_query($sql, $con) or die(mysql_error());

while($row = mysql_fetch_array($result)) {

    $make = $row[make];
    $model = $row[model];
    $year = $row[year];
    $month = $row[month];
    $day = $row[day];
    $hour = $row[hour];

    $make_array[make][] = $make;
    $model_array[model][] = $model;
    $year_array[year][] = $year;
    $month_array[month][] = $month;
    $day_array[day][] = $day;
    $hour_array[hour][] = $hour;
}

1 个答案:

答案 0 :(得分:2)

如果您想将其保留为一个SQL语句,那么您可以:

$sql = "
    SELECT DISTINCT 'make' as descr,make as val FROM items
    UNION
    SELECT DISTINCT 'model' as descr,model as val FROM items
    UNION
    SELECT DISTINCT 'year' as descr,year as val FROM items
    UNION
    SELECT DISTINCT 'month' as descr,month as val FROM items
    UNION
    SELECT DISTINCT 'day' as descr,day as val FROM items
    UNION
    SELECT DISTINCT 'hour' as descr,hour as val FROM items";

$result = @mysql_query($sql, $con) or die(mysql_error());

while($row = mysql_fetch_array($result)) {
    $make_array[$row['descr']][]=$row['val'];
}