Hallo,
ich stehe mal wieder auf dem Schlauch und finde nicht den richtigen Weg.
Vielleicht mag mich einer zur Lösung schubsen…
Ich habe eine Kategorie mit der id 65631acb18ca4e2b7da3243b84fc89a5
Jetzt möchte ich gerne alle Artikel in der oxarticles updaten, die in der oben genannten Kategorie gelistet sind. So soll dann beispielsweise von dem Artikel die Spalte xy eine 1 erhalten.
Ich hatte etliche Versuche unternommen, jedoch scheitert es immer daran das die Subquery mehr als einen Treffer wiedergibt.
Um überhaupt erst einmal die Suchtreffer anzuzeigen bediente ich mich mit:
select * from oxarticles where oxid = (select oxobjectid from oxobject2category where oxcatnid = ‘65631acb18ca4e2b7da3243b84fc89a5’);
aber das war halt nichts…
wer suchet, der findet…
SELECT*FROM oxarticles
INNER JOIN oxobject2category ON oxarticles.OXID = oxobject2category.OXOBJECTID
INNER JOIN oxcategories ON oxobject2category.OXCATNID = oxcategories.OXID
WHERE oxcategories.OXID=“65631acb18ca4e2b7da3243b84fc89a5”
Aber wir verpackt man das ganze in eine update Klausel ???
[QUOTE=shirtsfun;159739]wer suchet, der findet…
SELECT*FROM oxarticles
INNER JOIN oxobject2category ON oxarticles.OXID = oxobject2category.OXOBJECTID
INNER JOIN oxcategories ON oxobject2category.OXCATNID = oxcategories.OXID
WHERE oxcategories.OXID=“65631acb18ca4e2b7da3243b84fc89a5”
Aber wir verpackt man das ganze in eine update Klausel ???[/QUOTE]
UPDATE OXARTICLES SET FELDXY = 1 WHERE OXID IN
(
SELECT OXID FROM oxarticles
INNER JOIN oxobject2category ON oxarticles.OXID = xobject2category.OXOBJECTID
INNER JOIN oxcategories ON oxobject2category.OXCATNID = oxcategories.OXID
WHERE oxcategories.OXID="65631acb18ca4e2b7da3243b84fc89a5"
);
gruiss
marcel
whow danke,
leider erhalte ich die Fehlermeldung
#1052 - Column ‘oxid’ in field list is ambiguous
Wenn ich in der Select Anweisung
( SELECT oxid FROM oxarticles
INNER JOIN oxobject2category ON oxarticles.OXID = oxobject2category.OXOBJECTID
INNER JOIN oxcategories ON oxobject2category.OXCATNID = oxcategories.OXID
WHERE oxcategories.OXID=“65631acb18ca4e2b7da3243b84fc89a5” );
das SELECT oxid gegen SELECT * ersetze erhalte ich eine saubere Auflistung.
mach SELECT oxarticles.oxid daraus,
sonst bekommst du alle oxIds aus allen 3 Tabellen.
Ist zwar in dem Fall nicht schlimm, aber frisst 3 mal so viele Ressourcen, falls du es öfter machen musst.
Braucht man da überhaupt JOINS? Geht es nicht auch so?
UPDATE oxarticles SET oxarticles.FELDXY = 1 WHERE oxarticles.OXID IN
(
SELECT oxobject2category.OXOBJECTID FROM oxobject2category
WHERE oxobject2category.OXCATNID="65631acb18ca4e2b7da3243b84fc89a5"
);