1

このようなmysqlテーブルを取得しました

id | type | number
1  |  c   |  2
2  |  c   |  10
3  |  c   |  20

また、値を持つPHP配列を取得しました:

$array[c] = 5;
$array[d] = 10;

私はこのようなことをしたい

( SELECT * FROM table WHERE number >= $array[ type ] ) 

そのため、mysql 列から何らかの形でを取得し、配列から正しい値を見つけるために使用できます。

ちょっとトリッキーですが、どのように質問すればよいかわかりません。

4

4 に答える 4

1

これは最もエレガントな方法ではありませんが、このようなものですか?

$where = "WHERE ";

foreach($array as $key => $value)
{
    $where .=  "(type = $key AND number >= $value) OR";
}

$where = substr($where, 0, strlen($where)-2);

それをselectステートメントに添付してから、明らかにクエリを実行する必要があります。

うまくいけば、他の誰かがキャッチして、よりエレガントなソリューションを提供できるようになります.

于 2013-05-29T16:27:39.227 に答える
0

2 つのステップでそれを実行してみてください: SQL クエリを使用して配列に型の値を入れる前に

それからしばらくして

  ( SELECT * FROM table WHERE number >= $array[$i] )

$i は while ループのインデックスです

于 2013-05-29T16:26:27.660 に答える
0

多くの WHERE 句を使用するよりも、次のようなものになる可能性があります。

SELECT *
FROM table a
INNER JOIN
    (SELECT 'c' AS RowType, 5 AS RowVal
    UNION
    SELECT 'd', 10) Sub1
ON a.type = Sub1.type AND a.number >= Sub1.RowVal

定数を取得するだけの副選択を設定し、その副選択と既存のテーブルを結合します。

PHPでは、次のようなことを行いました:-

<?php
$SubQuery = array();
foreach ($array AS $key=>$value)
{
    $SubQuery[] = "SELECT '$key' AS RowType, $value AS RowVal";
}

$sql = "SELECT *
FROM table a
INNER JOIN (".implode(" UNION ", $SubQuery).") Sub1
ON a.type = Sub1.type AND a.number >= Sub1.RowVal";

?>
于 2013-05-29T16:33:47.227 に答える