2つの部分のリストを出し入れしてテストしたデータがあります。私は、部品が入った最後のテストの後に各部品のテスト値のSUMを選択する必要がありますが、出てこなかった。mysqlは2つの関係を比較して行の合計を選択します
IN LIST OUT LIST TEST
+--------+-----------+ +--------+------------+ +------+-------+
| testid | in_partid | | testid | out_partid | | test | value |
+--------+-----------+ +--------+------------+ +------+-------+
| 1 | 10 | | 1 | 10 | | 1 | 1 |
| 1 | 20 | | 1 | 20 | | 2 | 10 |
| 2 | 10 | | 2 | 10 | | 3 | 100 |
| 2 | 20 | | | | | | |
| 3 | 10 | | 3 | 10 | | | |
| 3 | 20 | | 3 | 20 | | | |
+--------+-----------+ +--------+------------+ +------+-------+
SUMは非常に簡単ですが、私はテストIDの一部が出で行きましたではなく、最後の検査のためにテストIDよりも大きい場合、それらの行にそれを制限することができますか?
この例では、すべてのリストに含まれているため、テスト3のすべての値をSUM 10で満たす必要がありますが、テスト2の場合と同じです。
partid sum(value)
10 111
20 100
私はmysqlと一緒にやってもいいですか、あるいはミックスにphpを入れる必要がありますか?
ネストされたSQLクエリまたはPHP。私は第二のものを好むだろう、なぜなら、最初のものが遅くなるからである。 – kirilloid
それぞれのpartidをループして、outリストに含まれているかどうかを確認します。私はすべての可能性をチェックできる1つのmysqlクエリについて考えることはできません。私はまた、2-20がアウトリストにあるときに何が起こるのか、2-10はそうではないので、あなたが不足していると思いますか?おそらく同じ出力を得る必要がありますが、mysqlクエリは完全に異なる必要があります。 – Martin
コメントありがとうございます。多分、私は部品をループし、最後の無差別なテストをnull LEFT OUTER JOINで取得し、そこから進んでいくでしょう。 – Juhani