2010-10-14 65 views
0

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

以下代码将所有列中的所有唯一值放在$ 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; 
} 
+0

什么用独特的日子吗?几个小时? – 2010-10-14 18:14:18

+0

@Col弹片与问题无关。他们只是这个例子的样本值。 – Mark 2010-10-14 18:16:57

+0

你知道,你的整个问题与常识没什么关系。我只是想弄清楚为什么你需要这种不寻常的东西。 – 2010-10-14 18:20:20

回答

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']; 
} 
+0

@Mark这将做你正在做的事情,虽然我不确定你想做什么很有意义。您可能会将它们作为单独的查询执行。 – 2010-10-14 18:25:58

+0

当然不会不同意这个@bemace,尽管从Mark的评论中也许这只是一个伪示例 - 也许这种方法对他的应用更有意义。 – Rudu 2010-10-14 18:29:36

相关问题