MySQLのヘルプ:table1.dateが最も大きい... SELECT table2.id
質問
私はそれらを照会するために内部結合を使用して、2つのテーブルを持っています。
SELECT COUNT(table2.id)
FROM table2
INNER JOIN table1 ON table2.relazioneid = table1.id
WHERE table1.date > ? AND table1.date < ?
これは2つの日付の間の報告にエントリのIDをカウントします。表1は、レポートの情報(日付、グループIDなど)、表2は、レポートのエントリを保持を保持します。
それだけで、それらの2つの日付の間、最新の日付のレポートからIDを選択除い私は、ほぼ正確に同じクエリを作成したいと思います。
誰が助けることはできますか?私はかなりMAXのまわりで私の頭を取得することはできません(日付)のクエリを入力する - 私は戻って取得すべては、すべてのIDの数も最大日付ではなく、最大の日からちょうどそれらのIDです。
。おかげで、
<時間>私は、おそらくネストされたSQLクエリを考えてきた - あなたがこれを行うことができますか?私はGoogleで参照を見つけることができますが、それは仕事を得ることができない...に似て何かます:
SELECT COUNT(table2.id)
FROM table2
INNER JOIN table1 ON table2.relazioneid = table1.id
WHERE table1.date > ? AND table1.date < ? AND
(
SELECT MAX(date)
FROM table1
WHERE date > ? AND date < ?
)
それはしかし仕事を得ることができない、と私はphpMyAdminの中でそれをテストしようとすると、それは私のユーザーがSELECT権限を持っていない私に言ってエラーで私を蹴ります。奇妙な、ので、これは私がルートとしてにログインしていたテストサーバーです。
解決
テーブルの構造に関する更なる情報がなければ、私はあなたがこのような何かを試すことをお勧めします:
SELECT t2.id
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.relation_id
WHERE t1.date BETWEEN ? AND ?
HAVING MAX(t1.date)
私はこれをテストしていませんが、それはあなたがこの問題に行くことができる一つの方向にポイントする必要があります。サブクエリを使用してのあなたの他の提案が有効であり、このような何かを働くかもしれません。
SELECT *
FROM table2 t2
WHERE t2.parent_id IN (
SELECT t1.relation_id
FROM table1 t1
WHERE t1.date BETWEEN ? AND ?
GROUP BY t1.relation_id
HAVING MAX(t1.date)
)
またはで一時テーブルに参加します:
SELECT *
FROM table2 t2
INNER JOIN (
SELECT t1.relation_id
FROM table1 t1
WHERE t1.date BETWEEN ? AND ?
GROUP BY t1.relation_id
HAVING MAX(t1.date)
) AS t1 ON t2.relation_id = t1.relation_id
他のヒント
...WHERE table1.date BETWEEN'2009-01-01' AND '2009-01-02' ORDER BY table1.date LIMIT 10
あなたの日付と10の最初の行を取得します。
所属していません StackOverflow