0

私たちが運ぶすべての部品について、すべての車両、メーカー、およびエンジンの単一の MySQL テーブルを作成しました。PHPだけを使用して、カスケードドロップダウン検索機能を作成しようとしています。私のスクリプトは 2 番目のクエリで失敗します。

SELECT model FROM veh_types WHERE make = $vehmakeA GROUP BY model

GROUP BY 句で失敗していると思います。

誰かが私を正しい方向に向けることができますか?

ありがとう!

編集 ------------- これが私のコードの詳細です。

echo "<p>VEHICLE MAKE"; 
    echo "<select name=\"vehmake\" id=\"vehmake\" onchange=\"this.form.submit();\">";
    echo "<option value=\"--\">SELECT VEHICLE MAKE...</option>";
    echo "<option value=\"--\">SELECT VEHICLE MAKE 2...</option>";

    $queryModel = "SELECT make, model FROM veh_types WHERE make = $vehmakeA GROUP BY model";
    $resultModel = mysql_query($queryModel) or die(mysql_error());
    while($rowModel = mysql_fetch_array($resultModel)) {
        $vehmodel = $rowModel['model'];
        echo "<option value=\"$vehmodel\">$vehmodel</option>\n";    
    }

    echo "</select></p>";
4

3 に答える 3

1

GROUP BY ステートメントは、集計関数と組み合わせて使用​​され、結果セットを 1 つ以上の列でグループ化します。

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name 演算子の値 GROUP BY column_name

集計 (GROUP BY) 関数

Name    Description

AVG()   Return the average value of the argument
BIT_AND()   Return bitwise and
BIT_OR()    Return bitwise or
BIT_XOR()   Return bitwise xor
COUNT(DISTINCT) Return the count of a number of different values
COUNT() Return a count of the number of rows returned
GROUP_CONCAT()  Return a concatenated string
MAX()   Return the maximum value
MIN()   Return the minimum value
STD()   Return the population standard deviation
STDDEV_POP()    Return the population standard deviation
STDDEV_SAMP()   Return the sample standard deviation
STDDEV()    Return the population standard deviation
SUM()   Return the sum
VAR_POP()   Return the population standard variance
VAR_SAMP()  Return the sample variance
VARIANCE()  Return the population standard variance

参照:リンク

于 2013-02-05T03:46:50.300 に答える
0

答えの組み合わせが私の問題を解決しました。GROUP BYからDISTINCTに変更し、変数の前後に一重引用符を追加すると、機能します!!! 助けてくれてありがとう!振り返ってみると、どちらの回答もMichaelBerkowskiからのものでした。ありがとうマイケル!

于 2013-02-05T05:12:33.497 に答える
0

あなたのテーブルがどのように見えるかをまとめただけで、このクエリはうまくいきます:

    CREATE TABLE IF NOT EXISTS `veh_types` (
      `id` int(10) NOT NULL auto_increment,
      `make` varchar(100) default '0',
      `model` varchar(100) default '0',
      `submodel` varchar(100) default '0',
      `type` varchar(100) default '0',
      UNIQUE KEY `id` (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

    INSERT INTO `veh_types` VALUES (1, 'Ford', 'Ranger', 'EX', 'Truck');
    INSERT INTO `veh_types` VALUES (2, 'Ford', 'Focus', 'EX', 'Car');
    INSERT INTO `veh_types` VALUES (3, 'Honda', 'Civic', 'EX', 'Car');
    INSERT INTO `veh_types` VALUES (4, 'Honda', 'Accord', 'LX', 'Car');
    INSERT INTO `veh_types` VALUES (5, 'Chevy', 'S10', 'LS', 'Truck');

    SELECT model
    FROM veh_types 
    WHERE make = 'Ford'
    GROUP BY model;
于 2013-02-05T04:09:06.587 に答える