結果が見つからない場合でも、すべての行とグループリレーショナルテーブルを選択します

celsomtrindade

特定の期間に行われたすべてのカテゴリとトランザクションを選択しようとしています。そのために、私はこのクエリを持っています:

SELECT
    b.category, SUM(a.value) as 'total'

FROM
    transactions a,
    transactions_category b

WHERE a.type = 2
AND YEAR(a.date) = :year
AND MONTH(a.date) = :month
AND a.id_category = b.id

GROUP BY a.id_category
ORDER BY total DESC

これは正常に機能していますが、トランザクションが関連付けられているカテゴリのみが選択されます。たとえば、「インターネット」という名前のカテゴリがあり、その月に「インターネット」に関連するトランザクションがなかった場合、そのリストには表示されません。

その月にトランザクションが存在しない場合でも、すべてのカテゴリのトランザクションの合計を選択するにはどうすればよいですか?

期待される結果は次のようになります。

category: 'Office', total: 240,00
category: 'Internet', total: 0,00
category: 'Food', total: 580,00
...
Mハリドジュナイド

left結合を使用して、すべてのフィルターをwhereから句に移動onます

SELECT
    c.category, SUM(t.value) as 'total'
FROM transactions_category c
LEFT JOIN transactions t 
  ON t.id_category = c.id
  AND t.type = 2
  AND YEAR(t.date) = :year
  AND MONTH(t.date) = :month
GROUP BY c.category
ORDER BY total DESC

このようにして、カテゴリテーブルである左側のテーブルのすべての行を常に取得します

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Linqは複数の結合から選択し、テーブルが一致を返さない場合でもすべての行を返します

分類Dev

PostgreSQLは1つのテーブルからすべてを選択し、テーブルリレーションからカウントを結合します

分類Dev

MySQL-レコードがテーブルFで見つからなかった場合は、リレーショナルテーブルA、B、C、D、Eからデータを選択します

分類Dev

SQL Serverで複数の左結合を実行しようとしていますが、結合されているテーブルに値が見つからない場合、予期しない結果が発生します

分類Dev

結合テーブルに一致するものがない場合、1つのテーブルからすべてのレコードを選択するにはどうすればよいですか?

分類Dev

1つ以上のID(つまりFK)がテーブルBに存在しない場合でも、テーブルAからすべてのレコードを選択します

分類Dev

PHPおよびMySQLの別のテーブル(リレーショナルDB)に応じて、テーブルからすべての結果を選択することはできません

分類Dev

別のテーブルでレコードが見つからない場合は、あるテーブルから選択します

分類Dev

並列シミュレーションは、シリアルおよび追加の並列実行と比較した場合、いくつかのタイムステップの後に異なる結果をもたらします

分類Dev

テーブル1の*すべての*行が存在しない場合にテーブル2から行を選択するMySQLクエリ

分類Dev

MySQL-3つのテーブルを結合し、データを表示します(一致するものが見つからない場合でも)

分類Dev

2つのテーブルを結合して、MsSQLの条件がある場合とない場合のすべてのデータを選択する方法

分類Dev

同じ外部キーを持つすべての行の中で行のIDが最も高いテーブルからすべてを選択します

分類Dev

テーブルAからすべての行を選択し、同じ結果セットでテーブルBから複数の列を選択します

分類Dev

条件が満たされたデータベーステーブルからすべての結果を選択し、結果を6に制限します。6未満の結果がadvert / divも表示する場合

分類Dev

そのテーブルの値が空白の場合、phpは別のテーブルに見つからないユーザーを選択します

分類Dev

1つのmysqlクエリで、結合グループbyを使用して複数のテーブルからデータを選択します

分類Dev

右側のテーブルにNULLが存在する場合は左側のテーブルからすべての結果を返し、右側のテーブルにnullが存在しない場合は内部結合の結果を返します

分類Dev

Mysqlは、特定のデータが見つかった場合に行全体を除外しながら、2つのテーブルから選択します

分類Dev

結果が空の場合は、3つのテーブルから選択します

分類Dev

SQL。2つの異なるテーブルからすべてのシリアル番号を選択します

分類Dev

SQL 1つのテーブルに行が存在しない場合は、別のテーブルから行を選択/挿入します

分類Dev

結合テーブルのフィールドがすべての行で同じ値ではない行を選択します

分類Dev

Laravelのリレーショナルテーブルに存在しないレコードを選択します

分類Dev

Oracleはテーブルから選択し、日付が最も古い場所で結合します

分類Dev

2つのテーブルを結合し、結果から選択する

分類Dev

テーブルBにレコードがない場合でも、左結合ですべてのレコードを取得します

分類Dev

列に値が指定されている場合は各グループからレコードを選択し、そうでない場合は任意の1つのレコードを選択します

分類Dev

結合されたテーブルに行がない場合でも、すべての行を返す方法

Related 関連記事

  1. 1

    Linqは複数の結合から選択し、テーブルが一致を返さない場合でもすべての行を返します

  2. 2

    PostgreSQLは1つのテーブルからすべてを選択し、テーブルリレーションからカウントを結合します

  3. 3

    MySQL-レコードがテーブルFで見つからなかった場合は、リレーショナルテーブルA、B、C、D、Eからデータを選択します

  4. 4

    SQL Serverで複数の左結合を実行しようとしていますが、結合されているテーブルに値が見つからない場合、予期しない結果が発生します

  5. 5

    結合テーブルに一致するものがない場合、1つのテーブルからすべてのレコードを選択するにはどうすればよいですか?

  6. 6

    1つ以上のID(つまりFK)がテーブルBに存在しない場合でも、テーブルAからすべてのレコードを選択します

  7. 7

    PHPおよびMySQLの別のテーブル(リレーショナルDB)に応じて、テーブルからすべての結果を選択することはできません

  8. 8

    別のテーブルでレコードが見つからない場合は、あるテーブルから選択します

  9. 9

    並列シミュレーションは、シリアルおよび追加の並列実行と比較した場合、いくつかのタイムステップの後に異なる結果をもたらします

  10. 10

    テーブル1の*すべての*行が存在しない場合にテーブル2から行を選択するMySQLクエリ

  11. 11

    MySQL-3つのテーブルを結合し、データを表示します(一致するものが見つからない場合でも)

  12. 12

    2つのテーブルを結合して、MsSQLの条件がある場合とない場合のすべてのデータを選択する方法

  13. 13

    同じ外部キーを持つすべての行の中で行のIDが最も高いテーブルからすべてを選択します

  14. 14

    テーブルAからすべての行を選択し、同じ結果セットでテーブルBから複数の列を選択します

  15. 15

    条件が満たされたデータベーステーブルからすべての結果を選択し、結果を6に制限します。6未満の結果がadvert / divも表示する場合

  16. 16

    そのテーブルの値が空白の場合、phpは別のテーブルに見つからないユーザーを選択します

  17. 17

    1つのmysqlクエリで、結合グループbyを使用して複数のテーブルからデータを選択します

  18. 18

    右側のテーブルにNULLが存在する場合は左側のテーブルからすべての結果を返し、右側のテーブルにnullが存在しない場合は内部結合の結果を返します

  19. 19

    Mysqlは、特定のデータが見つかった場合に行全体を除外しながら、2つのテーブルから選択します

  20. 20

    結果が空の場合は、3つのテーブルから選択します

  21. 21

    SQL。2つの異なるテーブルからすべてのシリアル番号を選択します

  22. 22

    SQL 1つのテーブルに行が存在しない場合は、別のテーブルから行を選択/挿入します

  23. 23

    結合テーブルのフィールドがすべての行で同じ値ではない行を選択します

  24. 24

    Laravelのリレーショナルテーブルに存在しないレコードを選択します

  25. 25

    Oracleはテーブルから選択し、日付が最も古い場所で結合します

  26. 26

    2つのテーブルを結合し、結果から選択する

  27. 27

    テーブルBにレコードがない場合でも、左結合ですべてのレコードを取得します

  28. 28

    列に値が指定されている場合は各グループからレコードを選択し、そうでない場合は任意の1つのレコードを選択します

  29. 29

    結合されたテーブルに行がない場合でも、すべての行を返す方法

ホットタグ

アーカイブ