Отсутствует строка данных в предложении NOT IN

Я только что понял, что мой автоматический расчет цены не заполняет цены для ListID 4. Я вставил цены из SELECT, показанного ниже.

Для исследования ошибок я выполнил SELECT без части WHERE, и он показывает пример строки данных.

Хотя я не могу найти ошибку, почему она не отображается при полном выборе (в ней нет записи с ListID = 4).

Кто-то может увидеть мою ошибку?

Не по ошибке

Редактировать: только что попробовал один подвыбор, он не показывает строк для запрошенной статьи. Почему предложение NOT IN не затронуто этим фактом?подвыборкой

1 ответ

Решение

Скорее всего, это из-за того, как вы комбинируете artikelnummer и auspraegungID,

Я не думаю, что вы учли тот факт, что '100' + '0' идентичен '10' + '00',


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

SELECT
  *
FROM
  #allArticles  AS allArticles
WHERE
  Artikelnummer = 'IT-810260'
  AND NOT EXISTS (SELECT *
                    FROM KHKPreisListenArtikel
                   WHERE ListeID       = 4
                     AND Artikelnummer = allArticles.Artikelnummer
                     AND Auspraegung   = allArticles.Auspraegung
                 )


Если это все еще не работает, то у вас должны быть соответствующие записи в этой другой таблице, найдите их следующим образом...

SELECT
  *
FROM
  #allArticles            AS allArticles
INNER JOIN
  KHKPreisListenArtikel   AS Preis
    ON  Preis.ListeID       = 4
    AND Preis.Artikelnummer = allArticles.Artikelnummer
    AND Preis.Auspraegung   = allArticles.Auspraegung
WHERe
  allArticles.Artikelnummer = 'IT-810260'

ПОЖАЛУЙСТА, ТАКЖЕ ПРИМЕЧАНИЕ

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

Особенно, когда таблицы / поля на другом языке...


РЕДАКТИРОВАТЬ

Вот запрос, который покажет причину сбоя вашего исходного запроса.

SELECT
  *
FROM
  #allArticles            AS allArticles
INNER JOIN
  KHKPreisListenArtikel   AS Preis
    ON  Preis.ListeID       = 4
    AND Preis.Artikelnummer       + CONVERT(VARCHAR(50), Preis.Auspraegung)
        =
        allArticles.Artikelnummer + CONVERT(VARCHAR(50), allArticles.Auspraegung)
WHERE
  allArticles.Artikelnummer = 'IT-810260'
Другие вопросы по тегам