2016-04-11 9 views
0
SELECT value AS $point_fld, COUNT(value) as cnt 
FROM ?_data d LEFT JOIN 
    ?_user u 
    ON d.`table` = 'user' AND d.`id` = u.user_id 
WHERE `key` = ? AND `value`<>'' AND `value`<>'Blank' AND 
     u.added BETWEEN ? AND ? 

/* ----- I added this bit */ 
LEFT JOIN ?_invoice_payment p 
ON d.'id' = p.user_id 
SUM(p.amount) as moneysum 
/* End ---- */ 
GROUP BY $point_fld 

このクエリを編集して、最初の部分で返されるユーザーに基づいて支払いの合計額を追加しようとしています。コメント付きのテキストは、私が追加したものです。それは意図したとおりに動作していますが、値を取得するために私の部分を追加すると、それが壊れます。LEFT JOINがMySQLクエリを壊すのはなぜですか?

すばらしいおかげです。私は、SQLのジョインと物事についてはかなり新しいです。

+2

LEFT JOINは、FROM句でのみ使用されるキーワードです。 –

+0

そういうわけで、私はそれを完全に別のクエリで行う必要があるでしょうか?または私はこの同じクエリ内から欲しいものをする方法がありますか? – elrobbo6

+0

私はこれまでに '?_xxx'表記を見たことがない、テーブル名をパラメータ化しようとしていますか?それはどこで許可されていますか? – Uueerdo

答えて

0
SELECT value AS $point_fld, 
     COUNT(value) as cnt, 
     SUM(p.amount) as moneysum 
FROM ?_data d 
INNER JOIN ?_user u ON d.`table` = 'user' AND d.`id` = u.user_id 
LEFT JOIN ?_invoice_payment p ON d.'id' = p.user_id 
WHERE `key` = ? AND `value`<>'' AND `value`<>'Blank' AND 
     u.added BETWEEN ? AND ? 
GROUP BY value 
+0

私はこれを試してみます – elrobbo6

+0

これはまだ動作しませんでした:/ – elrobbo6

+1

それは動作しませんそれは何ですか? –

0

これは最終的に機能しました。助けてくれてありがとう!

SELECT値CNTとして$ point_fld、 COUNT(DISTINCT u.user_id)AS、D上のmoneysumとして SUM(p.amount)FROM
?_data D LEFT JOINの?_user uは。 table = 'ユーザー' AND d。 id = u.user_id LEFT JOIN?_invoice_payment p ON d。 id = p.user_id WHERE key =? AND value <> 'AND value <>'空白 'AND u.bdw? AND? GROUP BYの値