Отсутствует строка данных в предложении 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'