oBo
oBo

Reputation: 992

How do I do a Update Query on another Query MySQL?

I have this Query:

SELECT notiser.notis AS notis
    , skapare.kategoriId
    , skapare.kategori AS kategori 
FROM notiser, skapare, anvandare 
WHERE skapare.kategori = 2 
    AND skapare.kategoriId =  448 
    AND skapare.id = notiser.skapareId 
    AND anvandare.id = skapare.anvandareId;

It gives me the Result:

notis   kategoriId  kategori
Hello!      448     2
Hello2!     448     2
Hello3!     448     2

I want to change the value of the "kategori" to 3, on just these specific results.

Is it possible?

Im using PHP and mysql.

Upvotes: 2

Views: 92

Answers (3)

haynar
haynar

Reputation: 6030

assume that you have an id column in skapare table to indentify single rows, then you can use the following query:

UPDATE skapare set kategori=3
WHERE skapare.id IN
    (SELECT skapare.id 
     FROM notiser, skapare, anvandare 
     WHERE skapare.kategori = 2 
        AND skapare.kategoriId =  448 
        AND skapare.id = notiser.skapareId 
        AND anvandare.id = skapare.anvandareId);

Upvotes: 0

gen_Eric
gen_Eric

Reputation: 227200

You can just use the same FROM and WHERE in the UPDATE statement.

UPDATE notiser, skapare, anvandare 
SET skapare.kategori = 3
WHERE skapare.kategori = 2 
    AND skapare.kategoriId =  448 
    AND skapare.id = notiser.skapareId 
    AND anvandare.id = skapare.anvandareId;

Upvotes: 3

Mike Mackintosh
Mike Mackintosh

Reputation: 14237

Not entirely following, but why not constrain skapare.kategori to 3

SELECT notiser.notis AS notis
    , skapare.kategoriId
    , skapare.kategori AS kategori 
FROM notiser, skapare, anvandare 
WHERE skapare.kategori = 3 
    AND skapare.kategoriId =  448 
    AND skapare.id = notiser.skapareId 
    AND anvandare.id = skapare.anvandareId;

Update I think I understand now:

UPDATE skapare SET skapare.kategori = 3 WHERE skapare.id IN(SELECT notiser.skapareId
FROM notiser, skapare, anvandare 
WHERE skapare.kategori = 2
    AND skapare.kategoriId =  448 
    AND skapare.id = notiser.skapareId 
    AND anvandare.id = skapare.anvandareId);

Upvotes: 0

Related Questions