Mysql 1 対多 スレーブ テーブルで複数条件と複数の統計を実行する方法
世界只因有你
世界只因有你 2017-05-18 10:54:32
0
3
814

メインテーブルユーザーテーブル
ID名電話番号(関連フィールド)

From テーブル通話記録 table
id ​​電話 (関連フィールド) ot_phone 時間タイプ (着信および発信通話) input_time

連絡先テーブル
id ​​c_id電話

会社テーブル
c_id名

各人の電話番号の数え方 (リスト制限 0、10)
電話がかかってきた回数
電話をかけられた回数
市内番号は何回か
外国番号は何回ありますか
合計着信通話時間
合計発信通話時間
一致する会社の数 (主に、連絡先テーブル内の電話機は同じ電話機を持ちますが、対応しているため、これが主な理由です)別の会社への場合、左側の join sum() データは不正確です)
マッチング会社の通話時間
......

主な問題は、連絡先テーブル内の電話が一意ではなく、重複した電話番号があることです。たとえば、ある人が 2 つの会社で働いている場合、
左結合合計の後に、会社には重複したデータが存在し、データは不正確です

実際には、連絡先のテーブル電話を重複排除して他のテーブルと結合することも考えましたが、これは非常に遅く、50 秒かかります。

連絡先のテーブルは 50,000 元以上です

これは1つのSQLでは解決できないようです

最終結果

は、
id ​​name Telephone in_num (着信コールの数) out_num (発信コールの数) local_phone_num (市内番号) .......
23 '小白 に似ています。 ' 15523232323 45 120 30 ....
24 '小红' 18823232323 70 93 41 ...

世界只因有你
世界只因有你

全員に返信(3)
小葫芦

まず、国内番号と外国番号を定義するフィールドが必要です。次に、通話記録なしで番号を表示する必要があるかどうかを確認します。必要に応じて、次の SQL を左結合に変更し、その値に対して null 判定を実行します。そうでない場合は、直接使用できます

リーリー

さらに、表 b の通話時間が統計的な int 型の分ではない場合は、変換する必要がある場合があります

いいねを押す +0
Ty80

次の SQL を実行すると、次の結果が得られます: (質問で期待される結果は少し不明確です)

ID 名前 電話 タイプ 数える
23 シャオバイ 15523232323 14
23 シャオバイ 15523232323 アウト 287

SQL

リーリー
いいねを押す +0
淡淡烟草味

外部結合クエリを使用できます

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート