0

以下の 2 つの表を使用して、名前の横に次に利用可能な時間を表示した名前のリストを表示したいと思います。名前ごとに 1 つの結果のみ。手伝ってくれますか?ありがとうボビー

user table
|  user_ID  |  name   
|  1        |   Smith  
|  2        |   Jones 

times_available
|    ID    |   user_ID  | time_avail |
|        1 |   2        |   01:30    |
|        2 |   2        |   02:30    |
|        3 |   3        |   02:30    |
|        4 |   3        |   03:30    |
|        5 |   3        |   04:30    |

名前ごとに次に利用可能な時間を表示する

|  user_ID  |  time   |
|    Smith  |   02:30 |
|    Jones  |   02:30 |

@Clodoaldoには良い答えがありますが、今後のtime_availがない名前も表示する必要があります

4

2 に答える 2

2
select u.name, min(t.time_avail)
from
    user_table u
    inner join
    times_available t on u.user_id = t.user_id
where t.time_avail > current_time
group by u.user_id
于 2013-02-27T18:25:14.667 に答える
0

あなたはこのようにすることができます

SELECT 
    u.user_ID,
    u.name,
    ta.NewTime
FROM user AS u
LEFT JOIN (
       SELECT r.* , lta.time_avail AS `NewTime` FROM times_available as r
       LEFT JOIN (SELECT * FROM times_available LIMIT 1,69596585953484) AS lta
          ON lta.ID = (SELECT MIN(ID) FROM times_available WHERE ID > r.ID GROUP BY r.ID limit 1)
) AS ta ON ta.user_ID = u.user_ID 
WHERE ta.NewTime IS NOT NULL
GROUP BY u.user_ID 

フィドルのデモ

于 2013-02-27T18:28:34.833 に答える