私は2つのテーブル(champ_valueとchamp_form)を持っているが、私は2つのクエリを試してみましたが、私は私が望む結果を得られなかった、希望の結果を得るために私のクエリを変更する方法は?
あなたは、他のソリューションに私に事前に
感謝を与えることができますしてください。
+-------------+-----------+---------------------+---------------+
| champ value | | | |
| | | | |
| v_id | v_value | v_fk_order_item_id | v_fk_champ_id |
| 220 | Bernad | 20000 | 1 |
| 221 | Lagaf | 20000 | 2 |
| 500 | Vincent | 20000 | 1 |
| 501 | Pernault | 20000 | 2 |
+-------------+-----------+---------------------+---------------+
+------------+-------------+---------------+-------------+
| champ_form | | | |
| cf_id | cf_position | cf_fk_form_id | cf_champ_id |
| 330 | 10 | 1800 | 1 |
| 331 | 12 | 1800 | 2 |
| 630 | 13 | 1800 | 1 |
| 631 | 14 | 1800 | 2 |
+------------+-------------+---------------+-------------+
所望の結果は次のようになり:
+----------------+-------+-------------+-------------+----------+
| desired result | | | | |
| | | | | |
| v_id | cf_id | cf_position | cf_champ_id | v_value |
| 220 | 330 | 10 | 1 | Bernard |
| 221 | 331 | 12 | 2 | Lagaf |
| 500 | 630 | 13 | 1 | Vincent |
| 501 | 631 | 14 | 2 | Pernault |
+----------------+-------+-------------+-------------+----------+
私はこの最初のクエリを試みた:
SELECT v.v_id, cf.cf_id, cf.cf_position, cf.cf_champ_id, v.v_value
FROM champ_form cf
JOIN champ_value v ON v.v_fk_champ_id = cf.cf_champ_id
WHERE cf.cf_fk_form_id =1800
AND v.v_fk_order_item_id =20000
GROUP BY v_id
ORDER BY cf.cf_position
を、私はこれを得る:
+---------------+-------+-------------+-------------+----------+
| group by v_id | | | | |
| | | | | |
| v_id | cf_id | cf_position | cf_champ_id | v_value |
| 220 | 330 | 10 | 1 | Bernard |
| 221 | 330 | 10 | 1 | Vincent |
| 500 | 331 | 12 | 2 | Lagaf |
| 501 | 331 | 12 | 2 | Pernault |
+---------------+-------+-------------+-------------+----------+
及び第二クエリ:
SELECT v.v_id, cf.cf_id, cf.cf_position, cf.cf_champ_id, v.v_value
FROM champ_form cf
JOIN champ_value v ON v.v_fk_champ_id = cf.cf_champ_id
WHERE cf.cf_fk_form_id =1800
AND v.v_fk_order_item_id =20000
GROUP BY cf.cf_id
ORDER BY cf.cf_position
+----------------+-------+-------------+-------------+---------+
| group by cf_id | | | | |
| | | | | |
| v_id | cf_id | cf_position | cf_champ_id | v_value |
| 220 | 330 | 10 | 1 | Bernard |
| 221 | 331 | 12 | 2 | Lagaf |
| 220 | 630 | 13 | 1 | Bernard |
| 221 | 631 | 14 | 2 | Lagaf |
+----------------+-------+-------------+-------------+---------+
最初のクエリは正しい値を示しますが、正しい位置は ではなく、2番目の値は正しい値ですが、正しい値は与えません。
望ましい行動が何であるかを言葉で説明してください。 –
期待する出力はありますか? – Sadikhasan
これは、GROUP BY句がSELECTされた値に対応していないために発生します。 MySQL以外のほとんどのデータベースでは、この予期しない動作を防ぐためにエラーが発生します。 –