2016-04-13 9 views
0

kimse bana yardım edin olabilecek ilk noktalı virgülden sonra mevcut yapabiliriz anahtar sütunu olarak SKU'ya ile birleşim tablosuçek geçerli değer ben @APPLICATION tablonun NONVALID sütundaki verilerin @ATTRIBUTE tablosunda mevcut remarks_1 değerini içeren olup olmadığını kontrol çalışıyorum</p> <p>mümkünse

Tablo

DECLARE @ATTRIBUTE TABLE 
(
SKU VARCHAR (50), 
REMARKS_1 VARCHAR (50) 
) 

INSERT @ATTRIBUTE 


SELECT 'AMRN205-740','P-215-40-18;' UNION ALL 
SELECT 'NATN205-740','LT-275-65-20' UNION ALL 
SELECT 'NATN205-740','XX-275-65-20' 



DECLARE @APPLICATION TABLE 
(
SKU VARCHAR (50), 
NONVALID VARCHAR (50) 
) 

INSERT @APPLICATION 
SELECT 'AMRN205-740','Plus Size; P-215-40-18; 87H' UNION ALL 
SELECT 'BCTN205-740','Plus Size; P-215-40-18; 86H' UNION ALL 
SELECT 'NATN205-740','Plus Size; 86H' UNION ALL 
SELECT 'AMRN205-740', NULL union all 
SELECT 'BCTN205-740','P-215-40-18; 86H' UNION ALL 
SELECT ''BCTN205-740', ;86H' 

BEKLENİYOR ÇIKIŞ

'NATN205-740','Plus Size; 86H' 
'BCTN205-740','P-215-40-18; 86H'-- plus size or semi-plus size before first semicolon in a string is missing 
    BCTN205-740', ;86H'-- plus size or semi-plus size before first semicolon in a string 

İLK noktalı virgül sonra OLARAK o da LT-275-65-20 veya XX-275-65-20

Teşekkür sen normalleştirmek için

+0

beni insert ifadesinin 'values' maddesi ile tanıştırayım:' @application değerlere (takın 'AMRN205-740',' Artı boyutu; P-215-40-18; 87H '), (' BCTN205-740 ',' Artı Boyutu; P-215-40-18; 86H ').… ' – Richard

+0

Merhaba, Cevabımı güncelledim –

+0

Merhaba, Cevabımı yeniden güncelledim, benim hatam için özür dilerim –

cevap

1

Nasihat çok içermiyor tablolarınızı daha iyi:

ben aşağıdaki gibi SKU adlı SKU listesi için bir tablo tercih mi:

CREATE TABLE sku 
(id int, name varchar(100)) 

id, adı (@attribute tablosunun) alanınızda SKU içeriğini özelliğinizde nihayet

SKU

bağlantılı Ve sahip

CREATE TABLE attribute 
(id int, 
fk_sku int, 
name varchar(100)) 

vardır, bir PK olduğunu

CREATE TABLE application 
(id int, 
fk_sku int, 
fk_attribute int) <-- if you want to store this info or another I don't know 

Bunu deneyin:

SELECT * 
FROM @APPLICATION app 
WHERE NOT EXISTS(
    SELECT 'ATTRIBUTE' 
    FROM @ATTRIBUTE att 
    WHERE att.SKU = app.SKU 
    AND PATINDEX('%' + att.REMARKS_1 + '%', app.NONVALID) > 0 
) 
and app.NONVALID IS NOT NULL 

Bu sorgu 'NATN20 döndürür 5-740 ',' Artı Beden; 86H 've' BCTN205-740 ',' Plus Size; P-215-40-18; 86H '

Sadece isterseniz' NATN205-740 ',' Plus Size; 86H 'böylece:

SELECT * 
FROM #APPLICATION app 
WHERE EXISTS(
    SELECT 'ATTRIBUTE' 
    FROM #ATTRIBUTE att 
    WHERE att.SKU = app.SKU 
) 
AND NOT EXISTS(
    SELECT 'ATTRIBUTE' 
    FROM #ATTRIBUTE att 
    WHERE att.SKU = app.SKU 
    AND PATINDEX('%' + att.REMARKS_1 + '%', app.NONVALID) > 0 
) 
and app.NONVALID IS NOT NULL 
+0

Üzgünüm, bu sadece beklenen kayıt yerine tüm kayıtları veriyor – akhrot

+0

Şimdi tekrar kontrol ediyorum –

+0

Çok teşekkürler Joe – akhrot