2017-09-08 13 views
1

私はこれを行うためにPHPを使用しています。 私のDBには、ある値に半類似のレコードが2つあり、HTMLの同じ行にそれらを表示するテーブルがあります。いいえ、私はselectをMySQLでグループ化することはできません。なぜなら、SAME値がこのテーブルの2〜3(最大4)カラムしか持たず、他のカラムが異なる値(頻度、カウント)を持っているからです。 わかりやすいように、私は、列の位置が同じ位置の2つのレコード(またはそれ以上)を許可できるテーブルを持っています。 A、B、Cと呼ばれる3つの列(例)は、同じ位置では同じ値(通常は)、異なる値ではD、E、F、Gの4つの列(例)を持ちます。行をグループ化し、番号を科学的表記で表示しない

私は何をしたいですか?

画面上のデータを印刷する際に、同じ位置の値をグループ化する必要があります(同じ位置のA、B、Cまたは他の列が同じ値を持つ場合は、これをグループ化して1回だけ表示します)。同じ行に2つの異なる値を表示します。

私はしばらくの間、作成された:私はXに何ができるか

Select all DB data 
While with all data to list (fetch_array); 
    Select the FK data; 
    Select the repeated data from table with a where condition in position; 
    IF the select of repeated data result have more than two rows: 
     X 
    Else 
     Display the individual rows. 
End of while. 

が異なる色でのみ表示されている...私は同じ値で、これらの行をマージする方法をsintetizeすることはできませんが。 ..:S

私のテーブル実際に...よりよく理解するために:

---------------|--------------------|----------------|---------------- 
    Position  | Variable   | Frequence  | Data 
---------------|--------------------|----------------|---------------- 
    102230  | Information 1  | 0.0003   | A 
---------------|--------------------|----------------|---------------- 
    102230  | Information 2  | 0.00743  | A 
---------------|--------------------|----------------|---------------- 
    103330  | Information x  | 0.002558  | A 
---------------|--------------------|----------------|---------------- 
1033340  | Information y  | 0.00255  | A 
---------------|--------------------|----------------|---------------- 
    102220  | Information 4  | 0.0099553  | A 
---------------|--------------------|----------------|---------------- 
    102220  | Information 5  | 0.00722243  | A 
---------------|--------------------|----------------|---------------- 

私が欲しいもの:

---------------|--------------------|----------------|---------------- 
    Position  | Variable   | Frequence  | Data 
---------------|--------------------|----------------|---------------- 
    102230  | Information 1  | 0.0003   | A 
       | Information 2  | 0.00743  | 
---------------|--------------------|----------------|---------------- 
    103330  | Information x  | 0.002558  | A 
---------------|--------------------|----------------|---------------- 
1033340  | Information y  | 0.00255  | A 
---------------|--------------------|----------------|---------------- 
    102220  | Information 4  | 0.0099553  | A 
       | Information 5  | 0.00722243  | 
---------------|--------------------|----------------|---------------- 

これは私のテーブルの一例である...私は繰り返しの位置に細胞何をマージしたい、それがこの例で、Aのセルと位置番号です(同じ値を持っています - 私の実際のスクリプトでは、より多くの列があります)、これらの値を一度表示します。また、異なる値を持つが、同じマージされた位置にある列は、同じ行に表示されますが、一方は下に表示されます。

また別の問題があります。私は、周波数を持つ小数の列を持っていますが、私はドットの後の数字のサイズを決定することはできませんので、私はドットの後にデータに大きなサイズを入れます。

問題がありますか?このような

スクリプトプリント番号:

0.00000828700000000000 
0.00216100000000000000 

そして、私はこれ欲しい:

0.000008287 
0.002161 

しかし、私はfloatval()を使用する場合、スクリプトが返されます。

8.287E-6 
0.002161 

そして私を科学的表記法でのリターンを望んではいけません。

答えて

0

代わりFLOATVALの

おかげで()あなたはrtrimsprintfを使用することができます。

$number = rtrim(sprintf('%.20f', "0.00000828700000000000"), "0"); 

前の行の出力は次のとおりです。0.000008287

+0

ああ、ありがとう! 私はこれだけを使用しました: 'rtrim(" 0.00000828700000000000 "、" 0 ");' と働いています... – Rafael

関連する問題