sql >> データベース >  >> RDS >> Mysql

カウントと合計を含む3つのテーブルのMySQLINNERJOIN

    注文は経由で会社にリンクされているため 顧客の皆さん、2つの別々のサブクエリを実行してそれらに参加する必要はないと思います。むしろ、私はあなたがただ書くことができると思います:

    SELECT companies.company AS "Company",
           IFNULL(COUNT(DISTINCT companies_customers.customer_id), 0) AS "Total Customers",
           IFNULL(SUM(orders.amount), 0) AS "All Orders Total"
      FROM companies
      LEFT
      JOIN companies_customers
        ON companies_customers.company_id = companies.id
      LEFT
      JOIN orders
        ON orders.customer_id = companies_customers.customer_id
     GROUP
        BY companies.id
    ;
    

    編集して追加: とはいえ、スキーマは私にはあまり意味がないということを言わなければなりません。顧客と企業の間には多対多の関係があります。たとえば、John Smith Acme Widget Companyの顧客です および Intrepid Inc.の —ただし、注文はお客様の所有物であり、ではありません。 会社の。これは、注文がJohn Smithに属している場合を意味します 、それからそれは必然的に両方に属します Acme Widget Companyおよび Intrepid Inc.へ 。私はそれが正しいとは思わない。 customer_idを持つ代わりに フィールド、私はordersだと思います companies_customers_idが必要です フィールド。



    1. すべてのファイルをサーバーにアップロードしないで、phpを使用してサーバーに複数のファイルをアップロードする

    2. mysqld_safe is runningシナリオでmysqlのパスワードを設定するにはどうすればよいですか?

    3. flutterをlocalhostmysqlデータベースに接続する方法

    4. *アラート*MicrosoftOfficeビルド2201でこれ以上データベースのバグを開くことができません