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)

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

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

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

stevejobs ★★★★☆
()
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от 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
()
Ответ на: комментарий от zoonoox

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

Как то глупо

Не то слово

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

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

fxd

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

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

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

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

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

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

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

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

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