1

私はユニークな課題に直面しています。

HUNDREDNUMBERS という 100 個の数字を含むテーブルを取得しました。最良の四半期 (75 ~ 100 の数字) を選択し、BESTQUARTER という別のテーブルに配置します。

また、最悪の四半期 (1 ~ 25 の数字) を選択したいと考えています。これらを WORSTQUARTER という別のテーブルに配置します。

これが私のMysqlコードです。これまでのところ、

$Extract_Data = "
CREATE  TABLE $BESTQUARTER  
SELECT 
HUNDREDNUMBERS.number
FROM 
HUNDREDNUMBERS order by 
HUNDREDNUMBERS.number desc LIMIT 25 ";
$QuerySuccess =  mysql_query($Extract_Data, $connection);

そして他のテーブルのために....

 $Extract_Data = "
 CREATE  TABLE $WORSTQUARTER  
 SELECT 
 HUNDREDNUMBERS.number
 FROM 
 HUNDREDNUMBERS order by 
 HUNDREDNUMBERS.number asc LIMIT 25 ";
 $QuerySuccess =  mysql_query($Extract_Data, $connection);

問題は、このスクリプトが毎回 100% 正しいとは限らないことです。2 つのクエリの ASC と DESC に注目してください。これは、数字を並べ替えようとする独創的な方法です。

ところで、HUNDREDNUMBERS テーブルの一部の数値には小数点があります。さらに処理するには、2 つの新しいテーブル BESTQUARTER と WORSTQUARTER のデータが必要です。

どんな助けでも大歓迎です

4

4 に答える 4

0

長い時間の思考とテストの後、私はついにそれを解読したと信じています.

1) フィールド名「numbers」を DOUBLE UNSIGNED に変更しました。(最初は VARCHAR(50) を使用していました)

2) 同じフィールド名を持つ 2 つ以上のテーブルを使用している場合は常に、すべてのフィールド名の前にテーブル名を付けます。以下の完全なクエリでわかるように、私はそれを行い、うまくいきました。

3) 元のデータに同じ番号が複数回出現した。つまり、値が 100 の行のインスタンスが複数あった。MySQL は、値が 100 の行を 1 つだけテーブル BESTQUARTER に転送した。(どうしてか分かりません)。

uniqueid    | id    | numbers   
1   200 100
2   6   100
3   76  100
4   64  99.009987655
5   10  95.98765432
6   11  11.98765432
7   12  25.12
8   13  53.173543
9   153 72.87676
10  32  99

そこで、「GROUP By」を追加し、ID フィールドを使用しました。(注:「uniqueid」列は主キー、「id」は各番号を一意に識別する一意のキーです)

これが新しいコードです

create table BESTQUATER  
select 
HUNDREDNUMBERS.uniqueid , 
HUNDREDNUMBERS.id, 
HUNDREDNUMBERS.numbers
FROM 
HUNDREDNUMBERS
group by HUNDREDNUMBERS.id
ORDER BY HUNDREDNUMBERS.numbers  DESC  LIMIT 25
于 2013-04-10T14:33:33.930 に答える