>> Hi all, >> >> I've a question to guru :) >> there're two tables: >> mysql> show fields from domains; >> +--------+--------------+------+-----+---------+---------------- >> | Field | Type | Null | Key | Default | Extra >> +--------+--------------+------+-----+---------+---------------- >> | id | int(10) | | PRI | NULL | auto_increment >> | domain | varchar(255) | | | | >> | count | int(10) | | | 0 | >> +--------+--------------+------+-----+---------+---------------- >> 3 rows in set (0.01 sec) >> >> mysql> show fields from banners; >> +-------+--------------+------+-----+---------------+----------- >> | Field | Type | Null | Key | Default | Extra >> +-------+--------------+------+-----+---------------+----------- >> | id | int(10) | | PRI | NULL | auto_incre >> | did | int(10) | | | 0 | >> | text | varchar(255) | | | not specified | >> | count | int(10) | | | 0 | >> +-------+--------------+------+-----+---------------+----------- >> 4 rows in set (0.00 sec) >> and a query: >> >> select ifnull(domains.id,0) as id, >> ifnull(domains.domain,'no such domain') as domain, >> if(b.count,b.count+1,0) as count >> from banners b >> inner join domains on b.did=domains.id >> where domains.domain like 'domain.com'; >> >> I think this query is pretty simple, and I want to do following: >> select ifnull(domains.id,0) as id, >> ifnull(domains.domain,'no such domain') as domain, >> >> /// here I want to get the b.count already incremented (+1) >> /// and update my column b.count with new value in one query. >> /// for example: >> /// if(b.count,(update b set count:=count + 1),0) as count >> >> from banners b >> inner join domains on b.did=domains.id >> where domains.domain like 'domain.com'; >> >> How to do it, thanks for any help! >> >> >> Thanks, With best regards, >> >> Gorohov Dmitry >> ---------------------------------------------- >> Contact information: >> MSN: [EMAIL PROTECTED] >> AOL: chrislee943 >> ICQ: 284144732 >> phone: +(10) 375 29 5680605 >> ---------------------------------------------- >> >Nope, it's not going to happen in a single statement. The MySQL UPDATE >command does not return a recordset and the SELECT command cannot change a >>value on a table. This is the exact situation that explicit table locking >and transactions were created to solve. However, you did not say which >engine your tables are using (MyIsam or InnoDB). I cannot tell you >explicitly how to solve your problem without knowing which option I have >available to me.
>Instead of the results from "show fields from xxx;" can you post the >results of "show create table xxx\G" for both of your tables? Then the >list will have the information we need to give you a working solution. (I >guess you could also just tell us which engine you are using but the other >way give us more information) >Shawn Green >Database Administrator >Unimin Corporation - Spruce Pine >--=_alternative 006B5FB085257052_=-- Hi again, mysql> show create table banners\G; *************************** 1. row *************************** Table: banners Create Table: CREATE TABLE `banners` ( `id` int(10) NOT NULL auto_increment, `did` int(10) NOT NULL default '0', `text` varchar(255) NOT NULL default 'not specified', `count` int(10) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM 1 row in set (0.00 sec) mysql> show create table domains\G; *************************** 1. row *************************** Table: domains Create Table: CREATE TABLE `domains` ( `id` int(10) NOT NULL auto_increment, `domain` varchar(255) NOT NULL default '', `count` int(10) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=MyISAM 1 row in set (0.00 sec) Thanks, With best regards, Gorohov Dmitry ---------------------------------------------- Contact information: MSN: [EMAIL PROTECTED] AOL: chrislee943 ICQ: 284144732 phone: +(10) 375 29 5680605 ---------------------------------------------- -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]