Это довольно специфична:Как присоединиться к таблицам, чтобы вернуть определенное количество людей в команде, которые соответствуют определенным критериям?
У меня есть две таблицы (t1
и t2
) - t1
мой все лица стол, где все в моей базе данных, и все их данные хранятся, и t2
это мой гораздо меньше стол людей, которые на самом деле собираются сделать работу с людьми в t1
.
Как вы можете видеть в этом образце SQL Fiddle, люди в t1
у каждого есть определенные критерии, возложенные на них (возраст, рейтинг, и команды). Мой конечный результат, мы надеемся, будет следующим: для каждого работника в t2
запрос вернет конкретных людей от t1
, если их команды совпадают (идея в том, что я сопоставляю работников t2
с тем, re поговорить с в t1
основанный на их команде).
Но что делает его сложнее, что есть еще два набора критериев, которые я хочу запрос, чтобы удовлетворить также:
- возвращают только люди из
t1
, если их возраст находится в пределах от 30 до 60 лет (каждый вне из тех возрастных диапазонов следует игнорировать) - - И Если есть более двух человек, которые соответствуют вышеуказанным критериям, сначала верните те, у кого лучший рейтинг. (Например, если в команде четыре человека, и нам нужно только два - так что запрос должен вернуть два с лучшими рейтингами, которые будут соответствовать тем, какие рейтинги ближе к 100.)
Последняя вещь что трудно оборачивать голову, так это то, что в команде есть несколько сотрудников. Так что, если в команде «A» есть два рабочих места , запрос должен вернуть четыре человека t1
в команде A: два прикреплены к одному работнику и два прикреплены к другому (и, как я сказал выше, они должны быть четырьмя лучшими оцененными людьми [хотя неважно, какие два человека идут к тому, кто работает).
Мой надежды выход будет выглядеть следующим для всех команд:
ID (t1) Person (t1) Team (t1) Worker (t2)
539184 Smith, Jane Team A Smith, Bob
539186 Smith, Jim Team A Smith, Bob
537141 Smith, Danny Team A Smith, Bill
537162 Smith, James Team A Smith, Bill
Etc.
В действительности, я делаю что-то похожее на это десятки тысяч записей - именно поэтому это единственный как я могу себе это представить, но я даже не знаю, с чего начать. Любая помощь будет принята с благодарностью, и я добавлю дополнительную информацию, которая была бы полезной!
Вот обновленный скрипт SQL (http://www.sqlfiddle.com/#!2/eda85/7) с тем, как я попытался заставить ваш запрос работать. Я удалил «», потому что я не знал, что это делает, а также «<И» независимо от того, что «>», и зафиксировал некоторые свопы t1/t2. Способ написания кода в скрипте возвращает нулевые записи, но не дает ошибок.Вероятно, часть проблемы связана с вашими идентификаторами 't1' и' t2', но работники из 't2' могут не обязательно находиться в таблице' t1' people. Любые другие идеи? Благодаря! –
Ryan
Спасибо за редактирование, но это все еще кажется неработоспособным - если у вас есть шанс перепрыгнуть в SQL Fiddle в комментарии выше и снять что-то назад, это было бы здорово. – Ryan
Пожалуйста, попробуйте понять запрос. Как вы связываете эти две таблицы? t1.id = t2.id ничего не соответствует. Не проблема с логикой запроса, внесите необходимые изменения для себя. Когда я присоединился к «t1.LastName = t2.LastName», он дает вывод – georgecj11