1

このような3つの異なるテーブルがある場合

table_1

Field 1: victories
Field 2: name

table_2

Field 1: name
Field 2: birthday

今、私は最も多くの勝利を収めた人の誕生日を取得したいと思います。

だから私はこのようなことをするでしょう(擬似コード):

select victories from table_1 and sum_it_all
get name and pass name to table_2
select birthday from table_2 where name

わかりました、これはかなり醜い擬似コードですが、私はあなたが要点を理解することを望みます。

Andomarのソリューションを使用すると問題なく動作します。今、私はその中に別のテーブルをネストしようとしましたが、次のようになります:

select address
from table_3
where birthday = 
    (
    select  birthday
    from    table_2
    where   name = 
            (
            select  name
            from    table_1
            group by
                name
            order by
                sum(victories) desc
            limit   1
            )
    )

私は正しい答えを得ることができますが、何らかの理由でまたnull戻ってきます。そして、勝利の合計をどのように出力しますか?

4

6 に答える 6

1

次のネストされた SQL を使用できます。

 select name, birthday from table_2 where name in (
   select name from table_1 order by victories desc limit 1
   )
于 2012-06-25T19:09:56.103 に答える
1

あなたが探しているのは次のようなものだと思います:

SELECT t2.name, SUM(t1.victories) as SumOfVictories, t2.birthday 
FROM table_1 as t1
JOIN table_2 as t2
ON table_1.name = table_2.name
GROUP BY t2.name, t2.birthday
ORDER BY SUM(t1.victories) DESC
LIMIT 1
于 2012-06-25T18:50:01.763 に答える
1
select  birthday
from    table_2 t2
where   name = 
        (
        select  name
        from    table_1 t1
        order by
                victories desc
        limit   1
        )

1 人のユーザーが複数の行を持つことができる場合は、勝利table_1する必要があります。sum

select  birthday
from    table_2 t2
where   name = 
        (
        select  name
        from    table_1 t1
        group by
                name
        order by
                sum(victories) desc
        limit   1
        )
于 2012-06-25T18:48:58.400 に答える
0

あなたSELECT * FROM table_1 INNER JOIN table_2 ON table_1.name=table_2.name ORDER BY victories DESCに望ましい結果を与えるでしょうか?

于 2012-06-25T18:51:04.403 に答える
0

これはあなたの問題の解決策かもしれません:

SELECT table_1.name, table_2.birthday
FROM table_2
JOIN table_1 ON table_1.name=table_2.name
WHERE table_1.victories>=ALL(SELECT table_1.victories
                             FROM table_1)
于 2012-06-25T19:13:19.620 に答える
-1

これを試して:

   Select name, birthday from table_2 t2
       Join table_1 t1 On t1.Name = t2.name
   Having Count(*) = 
         (Select Max(namCount)
          From (Select Count(*) namCount
                From table_1
                Group By name))
   Group By t1.name
于 2012-06-25T18:56:07.837 に答える