LINUX.ORG.RU

SQL

 ,


0

2

Сразу извиняюсь если пишу не туда. Нужен скрипт который будет будет брать информацию из 3 таблиц (contactlog, interviewer и InterviewerFieldworkAvailability). interviewenumber есть во всех 3 таблицах, в принципе это основное что нужно знать. Должно выгружаться: номер интервьюера, фио, shiftname (min и max) и все это естественно за каждый день выбранного периода (+ обязательное условие за каждый контакт). Вот что у меня получилось, но к сожалению где то ошибка, ОЧЕНЬ много повторных строк, ну и естественно очень долго выгружается. Помогите разобраться, где ошибка.

select

a.InterviewerNumber, b.FirstName, b. lastname, dbo.ShiftName(c.MinShift), dbo.ShiftName(c.MaxShift), s.contactdate

from dbo.InterviewerFieldworkAvailability as a LEFT JOIN dbo.Interviewer as b on a.Interviewernumber=b.Interviewernumber LEFT JOIN dbo.contactlog as s on a.Interviewernumber=s.Interviewernumber LEFT JOIN ( SELECT InterviewerNumber, min(ShiftNumber) as minShift, max(ShiftNumber) as maxShift FROM dbo.InterviewerFieldworkAvailability GROUP BY InterviewerNumber ) as c on c.InterviewerNumber = a.InterviewerNumber

where ContactDate > ('2014-04-01 01:00:00.000') and ContactDate < ('2014-04-30 23:59:00.000') and a.InterviewerNumber >= '1000' and a.InterviewerNumber <= '9999' and b.FirstName not like '%(new_2П)%' and b.FirstName not like '%(new_2)%' and b.LastName not like '%(2)%' and a.InterviewerNumber not in (0,1000,1111, 7038, 6180, 7404, 8587, 2000, 7547, 6000, 1849, 7474, 4180, 8814, 8081, 6702, 9574, 1830, 3778, 9449, 8139, 3314, 8918)



Последнее исправление: zoonoox (всего исправлений: 2)

тебе для реального применения, или так, побаловаться?

если побаловаться, то составь список interviewenumber, и потом делай по три запроса на каждый interviewenumber.

Будешь ждать результата в десять раз дольше, чем если бы это было одним запросом, зато всё понятно с первого раза и не нужно забуряться в магию.

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от stevejobs

для реального применения, на работе

zoonoox
() автор топика
Ответ на: комментарий от stevejobs

суть в том, что после выгрузки (туда еще добавлю время работы по каждому контакту) по полученным данным строится сводная таблица в которой видно когда какой интервьюер сколько отработал

zoonoox
() автор топика
Ответ на: комментарий от zoonoox

ты говоришь, много повторений. Возьми какое-нибудь повторение и попробуй понять, откуда оно взялось. Все повторяющиеся строчки корректные?

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

from dbo.InterviewerFieldworkAvailability as a LEFT JOIN dbo.Interviewer as b on a.Interviewernumber=b.Interviewernumber LEFT JOIN dbo.contactlog as s on a.Interviewernumber=s.Interviewernumber

мне кажется, что где то тут ошибка...он выгружает несколько копий одного и того же интервьюера с одним и тем же временем, только не могу понять где

zoonoox
() автор топика
Ответ на: комментарий от edigaryev

Платить за небольшую ошибку в скрипте? Как то глупо, надеюсь есть добрые люди которые помогут разобраться

zoonoox
() автор топика
Ответ на: комментарий от zoonoox

с удовольствием осилил бы, да вот только времени нет

Как то глупо

Не то слово

handbrake ★★★
()
Ответ на: комментарий от zoonoox

Платить за разгребание и решение контрольного задания, заданного на экзамене? Как то глупо, гораздо проще эксплуатировать добрых людей

fxd

edigaryev ★★★★★
()
Ответ на: комментарий от edigaryev

ну может ему и правда для работы. Но разбираться в задаче, которая поставлена вот таким образом - ни кода с инструкцией как собирать, ни готовой БД - нет никакого желания. Наверное я злой человек.

stevejobs ★★★★☆
()
Ответ на: комментарий от zoonoox

Платить за небольшую ошибку в скрипте?

Платить за отсутствие мозга, либо за элементарную лень, сам Господь нам велел и завещал. Да.

novitchok ★★★★★
()
Последнее исправление: novitchok (всего исправлений: 1)
Ответ на: комментарий от stevejobs

ну может ему и правда для работы.

потцыэнт открыто плюёт на удобство чтения его виршей (lorcode) потенциальными «спасителями», а ты, брат, о какой-то «работе»

novitchok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.