0

SQL クエリを実行してテーブルからすべての行を選択し、各行の値が最も低い列を表示しようとしています。

たとえば、row1 から始めましょう...

columns1, column2, column3, column4

この行の最低値が入ってcolumn3いるので、値をエコーする必要がありcolumn3ます。次にrow2column4最低値があるためcolumn4、この行に表示する必要があります。

私はこのコードを試しました:

$sql="SELECT * from callplanmeta ";
$rs=mysql_query($sql,$conn) or die(mysql_error());
while($result=mysql_fetch_array($rs))
{
    $sql2="SELECT *, MIN(NULLIF(".$result["callplanname"].",0)) as number2 from callplandata ";
    echo $sql2;
    $rs2=mysql_query($sql2,$conn) or die(mysql_error());
    while($result2=mysql_fetch_array($rs2))
    {
        echo $result2["description"].' - '.number_format($result2["number2"],2).'<br><br>';
    }
}

しかし、私はそれが間違った方法で行っていて、1行の最低値しか表示していないことに気付きました

表の列名が表の列とcallplandata一致するcallplannamecallplanmeta

表の列callplandataは動的であるため、常に変化しており、常に追加されています。

4

3 に答える 3

0

このパズルは、このアプローチで解決できます。

SELECT

(SELECT columns1 from myTable) as myField

UNION 
(SELECT column2 from myTable)

UNION 
(SELECT column3 from myTable)

order by myField ASC LIMIT 1
于 2013-10-13T16:11:39.100 に答える
0

まずこれを使います

SELECT 
        GROUP_CONCAT(COLUMN_NAME)
FROM 
        INFORMATION_SCHEMA.COLUMNS
WHERE 
        table_name = 'mytable'
AND 
        ORDINAL_POSITION>2

すべての列を取得するには、PHP で文字列として形成し、次の (col1,col2,col3) を実行して、前のクエリを使用して形成できる column_name 文字列に置き換える必要があります。

PHPコードが追加されました

あなたのコードから私は2つのことを理解しています。最初のクエリでは1つのレコードしか返されないためwhileループは必要ありません.2番目のクエリでは複数の行が返されるためwhileループが必要です.それに応じてコード化する

<?php 

$field_string= $mysqli->query("SELECT GROUP_CONCAT(COLUMN_NAME) AS field_string
               FROM INFORMATION_SCHEMA.COLUMNS
               WHERE table_name = `callplandata`
               AND ORDINAL_POSITION>2")->fetch_object()->field_string;

(上記の >2 は、これが最初の 2 つの列を無視することを意味します。これは、あなたの場合は数値、説明のようです。無視するフィールドが多かれ少なかれある場合は、それに応じてこの数値を変更できます)

次に、この field_string 値を、最小のものを見つける必要がある他のクエリに使用できます。

$sql2="SELECT LEAST(".$field_string.") AS number FROM `callplandata`"; 

$rs2=mysql_query($sql2,$conn); 

while($result2=mysql_fetch_array($rs2)) 
{ 
   echo $result2["number"].'<br>'; 
} 
?>

これにより、すべての行の最初の 2 列を除くすべての列の中で最も低い値が得られ、画面に表示されます。私は PHP プログラマーではないので、PHP でコードを作成しただけなので、軽微なエラーが発生する可能性があります。

于 2013-08-19T12:47:19.783 に答える