s_articles_attributes kleiner s_articles_details

Ist es richtig, dass die Attribute-Zeile nur angelegt werden wenn man aktiv ein Freitextfeld füllt?

Habe 76.000 Detailszeilen aber nur 73.000 Attributezeilen? Keine Varianten vorhanden.

Danke und Gruss

Es müssen nicht immer Attribute da sein

Mhh ok, jetzt weiss ich auch warum mein SQL Script nichts einträgt - Zeile nicht vorhanden.

@Shyim‍

Hast du eine Idee wie man aus meinem Script eine INSERT IGNORE baut? Mir würde schon ein Schlagwort reichen für eine Googlesuche.

UPDATE s_articles_details AS sad, s_articles_attributes AS saa , s_articles AS sa, mytemptable AS tmp
SET saa.lieferant = 'LIEFERANTENNAME',
    sad.instock = tmp.bestand,
    sad.laststock = IF(tmp.bestand <= 0,1,0),
    sa.laststock = IF(tmp.bestand <= 0,1,0)
WHERE sad.ean = tmp.ean
AND sad.id = saa.articledetailsID
AND sa.id = sad.articleID

 

Mal eine andere Frage: Warum führst Du vor Deinem Update nicht ein Insert aus und ergänzt die fehlenden Attribut-Datensätze?

Sowas wie:

insert into s_articles_attributes (articledetailsID)
SELECT a.id FROM s_articles a
LEFT JOIN
s_articles_attributes aa
on 
a.id = aa.articledetailsID
where
aa.articledetailsID is null

Der Merge müsste alle Datensätze abklappern um zu schauen, ob vorhanden oder nicht, da ist das hier, denke ich, performanter.

Hi @MarcusMay‍ . Ja das habe ich jetzt gemacht, die Query lautet bei mir:

INSERT INTO s_articles_attributes(articledetailsID)
SELECT sad.id FROM s_articles_details AS sad
LEFT JOIN s_articles_attributes AS saa ON sad.id = saa.articledetailsID
WHERE saa.articledetailsID IS NULL

die s_articles lasse ich aber aussen vor weil die id aus s_articles_details genommen wird in s_articles_attributes.