За последние 24 часа нас посетили 11193 программиста и 839 роботов. Сейчас ищут 282 программиста ...

SQL

Тема в разделе "PHP для новичков", создана пользователем ZlobnyKolob, 12 сен 2019.

Метки:
  1. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Мужики, всем доброго вечерочка !

    быстро по задаче, есть таблица
    Дата(DATETIME), сотрудник, дальше ИНТ (1 - вход / 2 - выход)

    Мне нужно выбрать только тех сотрудников, которые вошли, которые выходили их не нужно выбирать

    HELP
    всем добра
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.120
    Симпатии:
    1.180
    Адрес:
    Лень
    ... WHERE INT = 1
     
  3. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    почитай внимательно, нужно выбрать всех кто входил, но не выходил, а с этим условием я выберу всех кто входил, даже если они возможно уже и вышли
    --- Добавлено ---
    Вот, мне 1 сотрудника не нужно получать в выборке, а он есть
    upload_2019-9-12_16-43-19.png
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.120
    Симпатии:
    1.180
    Адрес:
    Лень
    каким раком ты определяешь что они "возможно" вышли ?
     
  5. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    Посмотреть вложение 3949
    ну вот смотри 4 августа сотрудник номер 1 зашёл на работу, а 5 сентября 2018 он вышел,

    вот этими 2 и 1
    1 - вошёл
    2 - вышел
     
  6. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.120
    Симпатии:
    1.180
    Адрес:
    Лень
    как ты определяешь что это один и тот же сотрудник ?
     
  7. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    по идентификатору, там у сотрудника идентификатор 1
     
  8. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    209
    Адрес:
    Санкт-Петербург
    в таком виде хранить даты, конечно, то ещё кощунство.
     
  9. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    я их собираю из нескольких таблиц, там есть таблица сотрудников , таблица входов и выходов и я собираю все
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.193
    Симпатии:
    530
    Можно считать кол-во записей относящихся к каждому сотруднику (см. COUNT()) и если оно четно, значит вышел, иначе нет (движение через окна и т.п. не рассматриваем).
     
  11. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    TS как-то неправильно задал вопрос.

    Вообще по логике, имеем 2 таблицы в одной ID работника, номер записи и статус (который должен переписываться 1/2), во второй таблице можно хранить все даты входов и выходов сотрудников, хотя это можно и в первой создать и тоже переписывать, другой вопрос как определяется что он пришел и ушел, по сути должно быть 2 турникета один должен работать только на вход, другой на выход, чтоб исключить возможность выхода из окон и т.п.

    Т.е. тут как бы возникают другие вопросы. А так ведь всё логично, касаемо ответа MouseZver

    PS: Вообще странная работа, когда приходишь 4 августа 16-ого года, а выходишь 5 сентября 18-ого года.
     
  12. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    у меня есть одна таблица в ней 3 поля
    дата, сотрудник, ЧИСЛОВОЕ ПОЛЕ(1 - вход / 2 выход )

    вопрос в том, смогу ли я sql собрать последние записи только тех, кто вошёл, если они вышли - тогда они мне уже не нужны
     
  13. AlexandrS

    AlexandrS Активный пользователь

    С нами с:
    30 сен 2017
    Сообщения:
    659
    Симпатии:
    103
    Адрес:
    Краснодар
    Ну так если если сотрудник не выходил, значит он на работе, т.е. опрашиваешь на наличие выхода "2" список присутствующих. и потом этих сотрудников "вычитаешь" из основной массы
    Т.е. ВСЕ минус ВЫШЕДШИЕ = ПРИСУТСТВУЮЩИЕ
    И еще есть такой момент, когда сотрудник возможно вообще не приходил, тогда нужно опросить, приходил ли он вообще.

    PS: Я не специалист в области SQL, но это явно решаемая ситуация даже в рамках данной структуры таблицы.
     
    #13 AlexandrS, 13 сен 2019
    Последнее редактирование: 13 сен 2019
  14. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    327
    @ZlobnyKolob, что мешает сделать другую структуру таблицы?
    id, user_id, timestamp_in, timestamp_out, status
    где:
    status - это как раз твоё поле 1- вошёл, а как только вышел, меняем его на 2
     
  15. ZlobnyKolob

    ZlobnyKolob Активный пользователь

    С нами с:
    25 окт 2016
    Сообщения:
    184
    Симпатии:
    10
    может ещё чем-то помочь именно в плане sql или нет?