powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь по выборке из базы
9 сообщений из 9, страница 1 из 1
Нужна помощь по выборке из базы
    #38778774
nik2101
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть база (MySQL), в ней есть таблицы: "sotrudniki" и "tabel".
В таблице "tabel" есть поля: id_sotr, data_rab, smena_priznak и т.д.
Пытаюсь выбрать из таблицы "tabel" всех сотрудников, у которых smena_priznak не равно ('Я','СМ') и сотрудников, не имеющих записи в табеле (например забыли отметить)
Если пишу так
Код: plsql
1.
2.
3.
4.
5.
SELECT sotrudniki.id, tabel.data_rab, tabel.smena_priznak 
FROM `tabel1`.`sotrudniki` sotrudniki 
     LEFT JOIN `tabel1`.`tabel` tabel ON sotrudniki.id=tabel.id_sotr AND tabel.data_rab='2014-10-15' 
WHERE sotrudniki.id_podr!='99' AND sotrudniki.id_podr!='999' 
ORDER BY sotrudniki.id_podr asc


то выдает всех, в том числе и тех, кого не отметили.

А если так
Код: plsql
1.
2.
3.
4.
5.
SELECT sotrudniki.id, tabel.data_rab, tabel.smena_itog, tabel.smena_priznak 
FROM `tabel1`.`sotrudniki` sotrudniki 
     LEFT JOIN `tabel1`.`tabel` tabel ON sotrudniki.id=tabel.id_sotr AND tabel.data_rab='2014-10-15' 
WHERE sotrudniki.id_podr!='99' AND sotrudniki.id_podr!='999' AND tabel.smena_priznak NOT IN ('Я','СМ') 
ORDER BY sotrudniki.id_podr asc


то, кроме тех у кого smena_priznak не равно ('Я','СМ'), пропадают и те, кого не отметили (т.е. с NULL),
Может еще есть какой-то способ отбросить из результата лишнее?
...
Рейтинг: 0 / 0
Нужна помощь по выборке из базы
    #38778778
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос не соответствует логике. Внеси проверку на неравенство признака в условие связывания.
...
Рейтинг: 0 / 0
Нужна помощь по выборке из базы
    #38778798
nik2101
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AkinaЗапрос не соответствует логике. Внеси проверку на неравенство признака в условие связывания.
Пробовал, тогда получаю NULL для всех записей, кроме tabel.smena_priznak NOT IN ('Я','СМ')
...
Рейтинг: 0 / 0
Нужна помощь по выборке из базы
    #38779392
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik2101,

тогда вот так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select s.id                  as id
     , t.data_rab            as data_rab
     , t.smena_priznak       as smena_priznak
  from SOTRUDNIKI as s  
  left join TABEL as t on s.id=t.id_sotr    
                      and s.id_podr not in (999,99)  -- выбрать все подразделения, кроме 99,999                                                        
where t.id_sotr is not null
  and t.smena_priznak not in ('Я','СМ') -- выбрать сотрудников, у которых "smena_priznak" не равно ('Я','СМ')
  and t.data_rab is null -- забыли отметить 
order by s.id_podr asc
...
Рейтинг: 0 / 0
Нужна помощь по выборке из базы
    #38779407
nik2101
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Станислав Клевцовnik2101,

тогда вот так
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select s.id                  as id
     , t.data_rab            as data_rab
     , t.smena_priznak       as smena_priznak
  from SOTRUDNIKI as s  
  left join TABEL as t on s.id=t.id_sotr    
                      and s.id_podr not in (999,99)  -- выбрать все подразделения, кроме 99,999                                                        
where t.id_sotr is not null
  and t.smena_priznak not in ('Я','СМ') -- выбрать сотрудников, у которых "smena_priznak" не равно ('Я','СМ')
  and t.data_rab is null -- забыли отметить 
order by s.id_podr asc



Спасибо, но результат аналогичен результату моего запроса (№2). Т.е. nik2101пропадают и те, кого не отметили (т.е. с NULL)
...
Рейтинг: 0 / 0
Нужна помощь по выборке из базы
    #38779432
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik2101,

Тогда уточняющий вопрос:
вы хотите выбрать сотрудников: 1) у которых tabel.data_rab is null (не отметили ) и tabel.smena_priznak NOT IN ('Я','СМ')

2) tabel.data_rab is null (не отметили ) или tabel.smena_priznak [b]NOT IN ('Я','СМ') ?
...
Рейтинг: 0 / 0
Нужна помощь по выборке из базы
    #38779487
nik2101
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Станислав Клевцов,

Я хочу выбрать следующих сотрудников:
1. для которых в табеле есть записи на определенную дату (например tabel.data_rab='2014-10-15')
2. для которых в табеле нет записей на ту же дату, что и для п.1 (например tabel.data_rab='2014-10-15')
и отбросить из результата тех, для которых tabel.smena_priznak='Я' или 'СМ'.

Вот результат выполнения первого запроса
id data_rab smena_priznak
1 2014-10-15 Я
5 2014-10-15 СМ
10 2014-10-15 Я
11 NULL NULL - для сотрудника с id=11 нет записи в табеле на дату '2014-10-15'
12 2014-10-15 Я
.........................................
476 2014-10-15 Б - для сотрудника с id=476 есть запись в табеле на дату '2014-10-15'
109 2014-10-15 ОТ

Вот результат выполнения второго запроса
id data_rab smena_priznak
476 2014-10-15 Б
109 2014-10-15 ОТ
431 2014-10-15
134 2014-10-15 ДО
144 2014-10-15 В


Как видно пропали не только записи, для которых tabel.smena_priznak='Я' или 'СМ', но и 11 NULL NULL .

Т.е. нужен результат вроде этого:
id data_rab smena_priznak
11 NULL NULL
476 2014-10-15 Б
109 2014-10-15 ОТ
431 2014-10-15
134 2014-10-15 ДО
144 2014-10-15 В
...
Рейтинг: 0 / 0
Нужна помощь по выборке из базы
    #38779511
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik2101,

для 1 случая :

автор1. для которых в табеле есть записи на определенную дату (например tabel.data_rab='2014-10-15')

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select s.id                  as id
     , t.data_rab            as data_rab
     , t.smena_priznak       as smena_priznak
  from SOTRUDNIKI as s  
     left join  TABEL as t on s.id=t.id_sotr    
                                     and s.id_podr not in (999,99)                                                           
where t.id_sotr is not null
  and  t.data_rab is not null
order by s.id_podr asc
...
Рейтинг: 0 / 0
Нужна помощь по выборке из базы
    #38779534
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik2101,

и 2 случая

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select s.id                  as id
     , t.data_rab            as data_rab
     , t.smena_priznak       as smena_priznak
  from SOTRUDNIKI as s  
     left join  TABEL as t on s.id=t.id_sotr    
                                     and s.id_podr not in (999,99)                                                                        
where t.id_sotr is not null
  and  t.data_rab is null
  and t.smena_priznak not in ('Я','СМ')
order by s.id_podr asc
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь по выборке из базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]