SQLクエリでIF(SELECT)文を実装しようとしています。クエリは、これまでのようになります。私はそれを実行するとMYSQL IF(SELECT)クエリで複数の行が返される
SELECT *, IFNULL(duree_corrigee,duree) as
duree_final, IF((SELECT COUNT(*) FROM pointage_interval WHERE panier=1
AND pointage_employe_id = 'FH'
AND semaine = 23 GROUP BY date)>=1,
1,0) as panier_final FROM pointage_interval P
JOIN
employe E ON P.pointage_employe_id
= E.employe_id JOIN chantier C
ON C.chantier_id=P.pointage_chantier_id
WHERE (pointage_employe_id = 'FH'
AND semaine = 23)
、それは私を返します:#1242 - サブクエリは、基本的に私は、同じ日付で多くの行を持つことができます以上の1行
を返します。 1つのカラムは "panier"で、1または0のいずれかになります。panier_finalという新しいカラムを作成したいと思います。日。したがって、同じ日付のすべての行は、panier_finalに対して同じ値1または0を取得します。
私はこのように、IF(SELECT)なしでクエリを実行する場合:
SELECT *, IFNULL(duree_corrigee,duree) as
duree_final FROM pointage_interval P
JOIN
employe E ON P.pointage_employe_id
= E.employe_id JOIN chantier C
ON C.chantier_id=P.pointage_chantier_id
WHERE (pointage_employe_id = 'FH'
AND semaine = 23)
私はこの出力を得る:
あなたが見ることができるように、のための2つの行があります同じ日、2017-06-07。だから、各行の新しい列(panier_final)を作成するためにIF(SELECT)クエリを使用したいと思います。この新しい列の値は、同じ日付の行ごとに同じです。この場合、各行は新しい列panier_finalになるだろう、それぞれ指定された日付のため、値パニエ1
、感謝を取り除くことができると思います! – marcvander
もう1つの質問ですが、1日にグループ化された新しい列panier_finalのすべての行の合計を取得するにはどうしたらよいですか?(同じ日付の2行がpanier_final = 1の場合、私はこれを試みたが、私に間違った合計を与える:(SELECT SUM(panier_final)FROM pointage_interval WHERE pointage_employe_id = 'CL' AND semaine = 26 GROUP BY P.date)AS panier_final_total – marcvander