Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mysql Foreach z jednego stołu do drugiego Część 2

Wygląda na to, że szukasz agregacji warunkowej:

select 
    u.user_id,
    u.username,
    min(case when a.action = 'IN' then a.dateTime end) `in`,
    max(case when a.action = 'OUT' then a.dateTime end) `out`
from 
    user u
    inner join user_attendance a on u.user_id = a.user_id
group by
    u.user_id,
    u.username,
    date(a.dateTime)
order by
    u.user_id,
    date(a.dateTime)

Demo na DB Fiddle :

| user_id | username | in                  | out                 |
| ------- | -------- | ------------------- | ------------------- |
| 1       | tiger    | 2019-10-01 08:00:00 | 2019-10-01 14:00:00 |
| 1       | tiger    | 2019-10-02 08:00:00 | 2019-10-02 14:00:00 |
| 2       | pooh     | 2019-10-01 08:00:00 | 2019-10-01 14:00:00 |
| 2       | pooh     | 2019-10-02 08:00:00 | 2019-10-02 14:00:00 |


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja MySQL SELECT do sumowania aktualnych danych

  2. Jak utworzyć niestandardową kolumnę ze znakami automatycznego zwiększania?

  3. Czy klucz podstawowy jest automatycznie indeksowany w MySQL?

  4. Jak uzyskać listę baz danych?

  5. PERIOD_DIFF() Przykłady – MySQL