Самостоятельное соединение. Когда я пытаюсь выполнить самостоятельное соединение, в моем запросе отображаются совпадающие и не совпадающие значения. - PullRequest
0 голосов
/ 18 марта 2019

Friends-

У меня есть 2 таблицы, первая содержит подробную информацию об истории, вторая содержит подробную информацию о текущем продукте, я хочу получить product, чья prod.description изменилась в текущей. Я получил ответ на этот вопрос. Теперь у меня есть другая таблица, которая содержит current and history details из product, теперь мне нужен products, чей description изменился, я пытаюсь это сделать с помощью self join, но я вижу как текущее, так и предыдущее описание

Я использовал следующий запрос

select h.ProdName,h.ProdId, h.MfgDate, h.ProdDescription 
from historycurrent c join historycurrent h  on c.ProdId=h.ProdId where 
h.ProdDescription != c.ProdDescription;

enter image description here

Query and Output но мне нужны только последние 3 записи с выхода.

1 Ответ

0 голосов
/ 18 марта 2019

То, что вы хотите сделать, кажется невозможным с вашей текущей схемой. Это связано с тем, что ваша таблица была преобразована в гибридную таблицу объектов / таблицу транзакций. Для получения выходных данных ваша таблица, несомненно, имеет шесть строк. Первые три вставки добавили три объекта («D-Cold», «Otrivin» и «ZanduBalm»), но последние три вставки обновили эти объекты с новым описанием (и, таким образом, навсегда изменили старые записи).

Вам нужно разделить стол на две части. Итак, это:

create table historycurrent (
  ProdName VARCHAR(20),
  ProdId INT,
  MfgDate VARCHAR(20),
  ProdDescription VARCHAR(50)
  );

Необходимо стать (что-то вроде):

create table product (
  prodId INT PRIMARY KEY,
  prodName VARCHAR(?),
  mfgDate DATE
);

create table history (
  historyId INT,
  prodId INT, -- foreign key
  changeDate DATE,
  prodDescription VARCHAR(?)
);

Затем вы можете запросить историю и сделать простое объединение для информации о продукте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...