mysql:9055
From: "山本 瑞己" <"山本 瑞己" <mizuki-yamamoto@xxxxxxxxxx>>
Date: Wed, 24 Mar 2004 19:11:13 +0900
Subject: [mysql 09055] Re: 複数のテーブルからのセレクト
山本です。 > select A.ID, A.NAME, IFNULL(B.COUNT, 0),B.uid from A left join B on A.ID=B.ID この検索をすると ID | NAME | count | uid | ----+-------------+-------+-----+ 1 | あいうえお | 1 | 1| 2 | かきくけこ | 5 | 1| 2 | かきくけこ | 4 | 2| 3 | さしすせそ | 0 | NULL| 4 | たちつてと | 7 | 1| 4 | たちつてと | 2 | 2| 5 | なにぬねの | 0 | NULL| 6 | はひふへほ | 6 | 2| 7 | まみむめも | 0 | NULL| になるわけですから 当然 > where B.uid=1 をつけた結果は > ID | NAME | count | uid | > ----+-------------+-------+-----+ > 1 | あいうえお | 1 | 1| > 2 | かきくけこ | 5 | 1| > 4 | たちつてと | 7 | 1| になると思われます。 なので、 select A.ID, A.NAME, IFNULL(B.COUNT, 0),B.uid from A left join B on A.ID=B.ID and B.uid=1 とするわけですが これでも結果は ID | NAME | count | uid | ----+-------------+-------+-----+ 1 | あいうえお | 1 | 1| 2 | かきくけこ | 5 | 1| 3 | さしすせそ | 0 | NULL| 4 | たちつてと | 7 | 1| 5 | なにぬねの | 0 | NULL| 6 | はひふへほ | 0 | NULL| 7 | まみむめも | 0 | NULL| となってしまいます。 そこで、 select A.ID, A.NAME, IFNULL(B.COUNT, 0), IFNULL(B.uid,@test) from A left join B on A.ID=B.ID and B.uid=@test:=1 とすると、 ID | NAME | count | uid | ----+-------------+-------+-----+ 1 | あいうえお | 1 | 1| 2 | かきくけこ | 5 | 1| 3 | さしすせそ | 0 | 1| 4 | たちつてと | 7 | 1| 5 | なにぬねの | 0 | 1| 6 | はひふへほ | 0 | 1| 7 | まみむめも | 0 | 1| と出ると思います。
9049 2004-03-24 14:34 [MAO <mao@xxxxxxxxxx>] 複数のテーブルからのセレクト 9050 2004-03-24 15:04 ┣["山本 瑞己" <mizuki] 9053 2004-03-24 18:33 ┃┗[MAO <mao@xxxxxxxxxx>] -> 9055 2004-03-24 19:11 ┃ ┣["山本 瑞己" <mizuki] 9060 2004-03-24 20:50 ┃ ┃┗[MAO <mao@xxxxxxxxxx>] 9057 2004-03-24 19:35 ┃ ┣[Hiroshi Moriyama <mt] 9059 2004-03-24 20:32 ┃ ┗[<konet218@xxxxxxxxxx] 9051 2004-03-24 15:03 ┗[Hiroshi Moriyama <mt]