Nano Hash - криптовалюты, майнинг, программирование

как написать запрос на соединение в этой ситуации: 1 если не существует, нет ограничения 2 если есть, то он должен быть в это время

В начале мне нужно обработать простую ситуацию в качестве контроля входа:

таблица А:

идентификатор | имя | свидание

11 | имя | 2017-01-01

12 | имя | 2017-01-01

13 | имя | 2017-01-01

23 | имя | 2017-01-01

таблица Б:

идентификатор | дата_начала | Дата окончания

11 | 2017-01-01 | 2017-01-31

12 | 2017-02-01 | 2017-02-15

13 | 2017-01-01 | 2017-01-31

==========================================

Я должен найти людей, которые могут попасть между begin_date и end_date:

Мой первоначальный запрос:

select a.id from tmp.a join tmp.b on a.id=b.id and (a.date between b.begin_date and b.end_date);

и он должен вернуть идентификаторы 11 и 13, что правильно.

Но затем мой босс сказал мне, что идентификатор 23 также должен попасть, поскольку его нет в таблице B, поэтому нет ограничений в begin_date и end_date.

Могу ли я каким-либо образом изменить свой запрос, чтобы запрос также мог возвращать идентификатор 23?

Общий вопрос будет заключаться в том, как «присоединиться» в ситуации, когда: когда запись существует, выполнить внутреннее соединение с определенными условиями, когда она не существует, выполнить как левое соединение.

Спасибо.

24.04.2017

Ответы:


1

Пожалуйста, внесите следующие изменения:

выберите идентификатор из A левого соединения B on ((A.id=B.id и (A.entry_date между B.begin_date и end_date)) или B.begin_date IS NULL)

  1. Используйте левое соединение
  2. И еще одно или условие, т.е. B.begin_date IS NULL
24.04.2017

2

Здесь вам нужно выполнить две операции: одну вы уже сделали, а другую с объединением вы можете объединить с первым требуемым результатом.

select id from A join B on A.id=B.id and (A.entry_date between B.begin_date and end_date)
Union
Select id from A where A.id not in
(Select id from B)
24.04.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..