1

私は2つの別々のテーブルtbl_nameとを持っていtbl_parentます。

これは私のデータベースがどのように見えるかです:

tbl_name

member_id   first_name   last_name
    0          John        Doe
    1          Jane        Doe
    2          Julie       Doe
    3          Billy       Joe

tbl_parent

 member_id   parent_id
    0          Null
    1           0
    2           0
    3          Null

ご覧のとおり、tbl_name はメンバーに関するデータを保持し、tbl_parent は tbl_name の各レコードの関係を定義するために使用されます。

tbl_parent の parent_id は member_id を参照しているだけなので、指定されたテーブルに基づいて、John Doe は Jane Doe と Julie Doe の両方の親です。

今、私はparent_id 0を持つすべての人を数えようとしています.

これは私のクエリでした。別のテーブルで区切られていない場合は正常に機能しました。

select *, count(parent_id) from tbl_parent group by parent_id

私が抱えている問題は、正しく表示できない2つのテーブルで作業することです

出力を次のようにしたいと思います。

member_id   first_name   last_name  child
    0          John         Doe       2
    1          Jane         Doe       0
    2          Julie        Doe       0
    3          Billy        Joe       0
4

3 に答える 3

2

これは、左結合を使用するだけで実現できます。

これを試して:

SELECT c.*, COUNT(p.member_id) child FROM tab_name c LEFT JOIN tbl_parent p ON c.member_id = p.parent_id GROUP BY c.member_id

MySQL の結合に関する詳細については、次のリンクを参照してください http://dev.mysql.com/doc/refman/5.0/en/left-join-optimization.html

于 2013-10-28T15:03:38.727 に答える