-2
SELECT 
  (COUNT(v1.id) * 2) + (COUNT(v2.id) * 0.5) AS total,
  COUNT(v1.id) AS votes,
  COUNT(v2.id) AS visits
FROM
   votes AS v1,
   visits AS v2
;

実際には、このクエリの結果は投票と訪問で 1710 になりますが、投票には 18 行と訪問が 98 あります...理由は誰にもわかりますか? そして解決策はありますか?

正しい戻り値は次のようになります:
Total of 85
18 Votes
98 Visits

現在の構造:
http://sqlfiddle.com/#!2/b7604/1

4

3 に答える 3

2

試す、

SELECT SUM(VisitsCount) + SUM(VotesCount) AS TOTAL,  SUM(VisitsCount) AS VISITS, SUM(VotesCount) AS VOTES
FROM (

  SELECT COUNT(id) AS VotesCount, 0 AS VisitsCount, 1 AS Gr
  FROM votes

  UNION 

  SELECT 0 AS VotesCount, COUNT(ID) AS VisitsCount, 1 AS Gr
  FROM visits

  ) t 

GROUP BY Gr

SQLフィドルをチェック

于 2013-08-09T04:41:28.257 に答える
0

実行している CROSS JOIN の代わりに UNION 操作を確認する必要があります

次のようになります。

SELECT 
  whatever
FROM
   (SELECT whatever1 FROM votes) AS v1 UNION (SELECT whatever2 FROM visits) AS v2

構文が mySQL でどのようになるかはわかりません。また、これら 3 つの値を 1 つの「選択」命令でリストする可能性に疑問を持っています。実行可能であっても、頭を悩ます価値はありません!!!

于 2013-08-09T04:34:11.797 に答える