持っている2つのテーブルをマージしたいのですが、どちらも同じ名前です。対応するチケット番号にリクエストが少なく、ファイルも少ないように使用します
Table1 that is my main table Table 2 that I want to join
+----+------+-------+-------+ +----+------+-------+
| ID | Name | Info1 | Info2 | | ID | Name | Info1 |
+----+------+-------+-------+ +----+------+-------+
| 0 | L01 | blah | blah | | 0 | L01 | blah |
| 1 | L02 | blah2 | blah2 | | 1 | L01 | blah |
| 2 | L02 | blah3 | blah3 | | 2 | L03 | blah |
| 3 | L03 | Blah3 | blah3 | | 3 | L04 | blah |
| 4 | L04 | Blah4 | blah4 | | 4 | L04 | blah |
+----+------+-------+-------+ +----+------+-------+
次に、selectを使用してこのようにグループ化します
+------+-------------+
| Name | Count(Name) |
+------+-------------+
| L01 | 1 |
| L02 | 2 |
| L03 | 1 |
| L04 | 1 |
+------+-------------+
そして私の目標はこのようなものを作ることです
+------+-------------+--------------------+
| Name | Count(Name) | Count(table2.Name) |
+------+-------------+--------------------+
| L01 | 1 | 2 |
| L02 | 2 | 0 |
| L03 | 1 | 1 |
| L04 | 1 | 2 |
+------+-------------+--------------------+
助言がありますか?これまでに既存のプロジェクトで試したコード、 `NR_REKLAMACJIは表1の私の名前です。このコードは、この特定の表の名前の数だけを数えたときに機能していました。
SELECT
`NR_REKLAMACJI`,
COUNT(NR_REKLAMACJI) AS 'ilosc reklamowanego towaru',
CONCAT(klienci.IMIE, ' ', klienci.NAZWISKO) AS 'Klient',
CONCAT(users.IMIE, ' ', users.NAZWISKO) AS 'Osoba zajmująca się',
DOK_FV,
klienci.NAZWA_FIRMY,
DATA
FROM
`rtransportowa`
INNER JOIN klienci ON ID_R = klienci.ID_KLIENTA
INNER JOIN users ON ID_U = users.ID_USER
group by
NR_REKLAMACJI
2つのサブクエリの結果を結合し、左結合に基づいて必要に応じて結果を作成できます。
SELECT t1.`Name` as `Name`, t1.count AS `count(Name)`, IFNULL(t2.count, 0) AS `count(table2.Name)`
FROM (SELECT `Name`, count(*) AS count FROM tbl1 GROUP BY `Name`) t1
LEFT JOIN
(SELECT `Name`, count(*) AS count FROM tbl2 GROUP BY `Name`) t2 ON t1.`Name` = t2.`Name`;
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加