2つのテーブルがあり、2つのテーブルから共通のレコードを取得するためにjoinを使用しています。レコードがSQLクエリで2倍になりました。
私は以下のクエリを使用しましたが、私の問題はレコードを倍増させていることです。
質問は次のとおりです。お手伝いできますか?
クエリ#1:(正しい出力)
mysql> SELECT DISTINCT
xId1 AS xId1,
xArea AS xArea,
YEAR (
STR_TO_DATE(
`xDate`,
'%d/%m/%Y'
)
) AS xYear
FROM
doTable1 AA
LEFT JOIN doTable2 BB ON AA.xId1 = BB.xId2
WHERE
xArea IN ('XX1A')
AND YEAR (
STR_TO_DATE(
`xDate`,
'%d/%m/%Y'
)
) = 2016;
+-----------+-------+-------+
| xId | xArea | xYear |
+-----------+-------+-------+
| 91623545 | XX1A | 2016 |
| 89748942 | XX1A | 2016 |
| 115956872 | XX1A | 2016 |
| 103595808 | XX1A | 2016 |
| 103623873 | XX1A | 2016 |
| 103623892 | XX1A | 2016 |
| 103623872 | XX1A | 2016 |
| 103623894 | XX1A | 2016 |
| 112072738 | XX1A | 2016 |
| 112072751 | XX1A | 2016 |
| 117818773 | XX1A | 2016 |
| 117818753 | XX1A | 2016 |
| 117885105 | XX1A | 2016 |
| 117960040 | XX1A | 2016 |
| 117885111 | XX1A | 2016 |
+-----------+-------+-------+
15 rows in set
クエリ#2:(誤った出力2016年のために私は18本の記録を持っているので - クエリのよう15件のレコードをしていない - 存在感を倍増#1):
mysql> SELECT
DISTINCT COUNT(*) AS xQQQ,
xArea AS xArea,
YEAR (
STR_TO_DATE(
xDate,
'%d/%m/%Y'
)
) AS xYear
FROM
doTable1 AA
LEFT JOIN doTable2 BB ON AA.xId1 = BB.xId2
WHERE xArea IN ('XX1A')
GROUP BY
xArea,
xYear;
+------+-------+-------+
| xQQQ | xArea | xYear |
+------+-------+-------+
| 4 | XX1A | 2014 |
| 49 | XX1A | 2015 |
| 18 | XX1A | 2016 |
+------+-------+-------+
3 rows in set
これらのケースでは、SELECT *をSELECT *に置き換え、GROUP BYを使わずにクエリを実行して、各行を調べます。完全なデータベースを持たないと問題が何かを推測することはほとんど不可能です。 – Linkan
@Linkanヘルプに感謝していますが、**クエリ#1 **を** GROUP BY **なしで投稿しました** –
str_to_dateビットが少し冗長に見えます – Strawberry