私は運が無ければ2日間試しています。SQL left join:テーブルBから最新のものを返し、別のフィールドでグループ化する方法
のお客様::
| id | name |
| 1 | andrea |
| 2 | marco |
| 3 | giovanni |
アクセス:私は彼らの最終アクセス日時とすべての名前を返すようにしたい
| id | name_id | date |
| 1 | 1 | 5000 |
| 2 | 1 | 4000 |
| 3 | 2 | 1500 |
| 4 | 2 | 3000 |
| 5 | 2 | 1000 |
| 6 | 3 | 6000 |
| 7 | 3 | 2000 |
は、私は私のデータベースに以下の単純化されたテーブルを持っています。
最初に私は
SELECT * FROM customers LEFT JOIN access ON customers.id =
access.name_id
で単に試みたが、予想通り、私は7行の代わりに、3を得ました。だから、I understood I need to use GROUP BY statemet次のように:ランダムな行を使用してコンバインBYとして、私の知る
SELECT * FROM customers LEFT JOIN access ON customers.id =
access.name_id GROUP BY customers.id
、GROUP。実際、私はいくつかのテストでアクセス日の順序が整っていません。
代わりに、すべての顧客IDを対応する最新のアクセスでグループ化する必要があります。どのようにこれを行うことができますか?
私は、これはあなたが達成したい何だと思います
私はあなたがここで達成したいことを正しく理解しているとは確信していませんが、LEFT JOINの仕組みを誤解しているような印象を受けています。 GROUP BYは、MAXやMINなどの集計関数がある場合に機能します。あなたは、あなたが見たいと思っている出力が何であるかをより良く説明できますか? – Stefano
@decadenza。 。 。 'GROUP BY 'で' SELECT *'を使用すると、MySQLの最新バージョンでうまくいきなり壊れています。それはあなたが望むことをする正しい方法ではありません。 –