2

タイトルはあまり意味がないので、ここで説明しようと思います。

私はテーブルを持っています、

+------------+---------+------+-----+---------+----------------+
| Field      | Type    | Null | Key | Default | Extra          |
+------------+---------+------+-----+---------+----------------+
| id         | int(11) | NO   | PRI | NULL    | auto_increment |
| field1     | int(11) | NO   |     | NULL    |                |
| field2     | int(11) | YES  |     | NULL    |                |
+------------+---------+------+-----+---------+----------------+

結果を表示し、

$sql = "SELECT field1, field2 FROM tbl WHERE field1 = '$id' OR field2 = '$id'";

結果は long field = id としてリストされます。

この部分まですべてが機能します。返された行の結果を合計する必要があります。$id は、ユーザーがクリックした定義済みのリストから生成される動的な値です。

私が望むのは、field1 + field2 を合計し、id が変更されたときにそれらを正しくフィルタリングすることです。

今の私の結果は次のようになります。

id    |   sum( field1+field2)
----------------------------
1     |    10
50    |    22
13    |    80

(10 + 22 + 80)を合計したい。前述のように、表示される ID または行の数は動的です。ユーザーの選択に基づいて変化します。

4

2 に答える 2

4

各行に合計がある複数の行が必要な場合は、次を使用します。

$sql = "SELECT (field1+field2) as the_row_total FROM tbl WHERE field1 = '$id' OR field2 = '$id'";

全体の総計が必要な場合は、次を使用します。

$sql = "SELECT SUM(field1+field2) as the_grand_total FROM tbl WHERE field1 = '$id' OR field2 = '$id'";

注: 私はあなたがサニタイズしたと仮定します$id。そうでなければ、あなたは地雷の上に立っています。

于 2013-02-05T00:19:41.297 に答える
1

tblという名前のテーブルがあると仮定しましょう:

id    |    field1    |    field2
--------------------------------
1     |    6         |    4
50    |    10        |    12
13    |    41        |    39

あなたの質問に対するSQLクエリ:

$sql = "SELECT field1, field2 FROM tbl WHERE field1 = '$id' OR field2 = '$id'";

変数$idが値"1" suchを保持する場合$id = 1;、結果は次のようになります。

MySQL returned an empty result set (i.e. zero rows).

ここで、属性field1の値が"6"で、属性field2の値が"39"の場合、結果は次のようになります。

id    |    field1    |    field2
--------------------------------
1     |    6         |    4
13    |    41        |    39

しかし、SQL クエリが次のような場合:

$sql = "SELECT field1, field2 FROM tbl WHERE id = '$id'";

変数$idが値"0"を保持している場合、結果は次のようになります。

id    |    field1    |    field2
--------------------------------
50    |    10        |    12

その行の属性idの値「50」にゼロ「0」があるためです。


さて、このテーブルにあるもののように(field1 + field2)を合計しますか?

id    |    sum(field1+field2)
-----------------------------
1     |    10
50    |    22
13    |    80

では、SQL クエリに次のような複数のOR演算子があるということですか。

$sql = "SELECT field1, field2 FROM tbl WHERE field1 = '$field1' OR field2 = '$field2' OR field1 = '$field3'";

またはこれ:

$sql = "SELECT field1, field2 FROM tbl WHERE id = '$id1' OR id = '$id2' OR $id = '$id3'";

あなたの質問はどういう意味ですか?


値がデータに一致する属性field1または属性field2を持つすべての行の合計(field1 + field2)が必要であると仮定します。

$sql = "SELECT id , ( field1 + field2 ) AS `sum(field1+field2)` FROM tld WHERE field1 = '$field1' OR field2 = '$field2'";

変数$field1が値「6」を保持し、変数$field2が値「39」を保持する場合、表の結果は次のようになります。

id    |    sum(field1+field2)
-----------------------------
1     |    10
13    |    80

一番上にあると仮定したテーブルデータを検討してください!"6"の値を持つ field1 は "4" である field2の値関係があるため、(6 + 4)の合計は 10 です。そして、(field1 の値 41 + field2 の値 39) の合計は 80 です。属性sum(field1+field2)の行で述べたように、 (10 + 80)を合計しますか? MySQL を使用している場合は、次のように PHP スクリプトを使用して処理できます。

<?php
$connection = mysqli_connect($host, $user, $password, $database);

$sql = "SELECT id , ( field1 + field2 ) AS `sum(field1+field2)` FROM tld WHERE field1 = '$field1' OR field2 = '$field2'";

$result = mysqli_query($connection, $sql);

while($row = mysqli_fetch_array($result)) {
    $sum += $row['sum(field1+field2)'];
}

echo 'The sum is: ' . $sum;
?>

それが機能するかどうかをテストできます..

于 2013-04-13T08:22:46.133 に答える