![]() |
|
Welcome to the Computer Webmaster Gaming Console Graphics Forum forums. You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today! If you have any problems with the registration process or your account login, please contact contact us. |
| |||||||
| Database Database problems or need to ask a question? maybe something to do with sql injections or a database software question. Database topics cover MySQL, PostgreSQL, Oracle, SQL Server or anything else related to databases. |
![]() |
| | LinkBack | Thread Tools | Display Modes |
| | #1 | ||
| Basically, I want to create a system where I am archiving data - copying it from the active tables to the archive tables. I am setting this up so that any user can do it, not just someone technical like me. I am wondering if there is a way to copy multiple data sets with conditions into multiple data tables without doing a loop. Something like this: INSERT INTO archive_a, archive_b SELECT * FROM a, b WHERE b.lid = 10 AND a.tid = b.tid Though this doesn't really work. 'tid' and 'lid' are just identifiers to match up the data between tables. Any suggestions? Thanks, GA | |||
| Advertisements |
| | #2 | ||
| On Thu, 21 Jun 2007 15:52:41 GMT, GA <fang27@excite.com> wrote: > > >Basically, I want to create a system where I am archiving data - >copying it from the active tables to the archive tables. > >I am setting this up so that any user can do it, not just someone >technical like me. > >I am wondering if there is a way to copy multiple data sets with >conditions into multiple data tables without doing a loop. Something >like this: > > >INSERT INTO archive_a, archive_b SELECT * FROM a, b WHERE b.lid = 10 >AND a.tid = b.tid > >Though this doesn't really work. 'tid' and 'lid' are just identifiers >to match up the data between tables. > >Any suggestions? I would archive the data up-front with a trigger that inserts every new row that is added to a and b into archive_a and archive_b, and tell my users they can delete anything they want bcz it is already archived. >Thanks, > >GA -- ( Kees ) c[_] Recursion: see Recursion (#32) | |||
| | #3 | ||
| On Thu, 21 Jun 2007 21:34:53 +0200, Kees Nuyt <k.nuyt@nospam.demon.nl> wrote: >On Thu, 21 Jun 2007 15:52:41 GMT, GA <fang27@excite.com> wrote: > >> >> >>Basically, I want to create a system where I am archiving data - >>copying it from the active tables to the archive tables. >> >>I am setting this up so that any user can do it, not just someone >>technical like me. >> >>I am wondering if there is a way to copy multiple data sets with >>conditions into multiple data tables without doing a loop. Something >>like this: >> >> >>INSERT INTO archive_a, archive_b SELECT * FROM a, b WHERE b.lid = 10 >>AND a.tid = b.tid >> >>Though this doesn't really work. 'tid' and 'lid' are just identifiers >>to match up the data between tables. >> >>Any suggestions? > >I would archive the data up-front with a trigger that inserts >every new row that is added to a and b into archive_a and >archive_b, and tell my users they can delete anything they want >bcz it is already archived. > Thanks, that is an interesting suggestion. All of the records entered, though, are subject to possible deletion and editing as needed. I could fix my system to include that for the future, but what I have going on now is a bunch of records that need to be archived that are already in the tables. Since there is a top category for each set of records, I thought it would be easy enough to give them the option of archiving current records. I would like to do it (as everything) with the least amount of code necessary (I'm using php). As far as mysql is concerned, do you (or anyone) know of a way to do an insert/select in some way like the above? I know I can always pull the records and send them through a loop....but if I can do it in a one-liner using mysql, I would prefer that. -GA | |||
| | #4 | ||
| On Thu, 21 Jun 2007 20:38:52 GMT, GA <fang27@excite.com> wrote: >On Thu, 21 Jun 2007 21:34:53 +0200, Kees Nuyt <k.nuyt@nospam.demon.nl> >wrote: > >>On Thu, 21 Jun 2007 15:52:41 GMT, GA <fang27@excite.com> wrote: >> >>> >>> >>>Basically, I want to create a system where I am archiving data - >>>copying it from the active tables to the archive tables. >>> >>>I am setting this up so that any user can do it, not just someone >>>technical like me. >>> >>>I am wondering if there is a way to copy multiple data sets with >>>conditions into multiple data tables without doing a loop. Something >>>like this: >>> >>> >>>INSERT INTO archive_a, archive_b SELECT * FROM a, b WHERE b.lid = 10 >>>AND a.tid = b.tid >>> >>>Though this doesn't really work. 'tid' and 'lid' are just identifiers >>>to match up the data between tables. >>> >>>Any suggestions? >> >>I would archive the data up-front with a trigger that inserts >>every new row that is added to a and b into archive_a and >>archive_b, and tell my users they can delete anything they want >>bcz it is already archived. >> > > >Thanks, that is an interesting suggestion. All of the records >entered, though, are subject to possible deletion and editing as >needed. > >I could fix my system to include that for the future, but what I have >going on now is a bunch of records that need to be archived that are >already in the tables. > >Since there is a top category for each set of records, I thought it >would be easy enough to give them the option of archiving current >records. I would like to do it (as everything) with the least amount >of code necessary (I'm using php). > >As far as mysql is concerned, do you (or anyone) know of a way to do >an insert/select in some way like the above? I know I can always pull >the records and send them through a loop....but if I can do it in a >one-liner using mysql, I would prefer that. > >-GA You can't combine two tables in one insert statement, so INSERT INTO archive_a, archive_b SELECT * FROM a, b WHERE b.lid = 10 AND a.tid = b.tid indeed won't work. A 4 liner would do the job. Something like: BEGIN TRANSACTION; INSERT INTO archive_a SELECT * FROM a WHERE a.tid IN ( SELECT a.tid FROM a INNER JOIN b USING (tid) WHERE b.lid = 10 ); INSERT INTO archive_b SELECT * FROM b WHERE b.lid = 10; COMMIT; (untested) -- ( Kees ) c[_] Recursion: see Recursion (#32) | |||
| Featured Websites | ||||
|
![]() |
| Tags: archive, copying, data, table |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
| Display Modes | |
| |
Similar Threads | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| copying a row from one table to another? | Jim Michaels | Database | 5 | 07-01-2007 7:09 PM |
| Copying data from MS Access to MySQL 5.015 | Ted Byers | Database | 2 | 07-01-2007 6:29 PM |
| table name as data | Rob Kings | Database | 7 | 07-01-2007 6:27 PM |
| How to take data out of table, restructure the table and then put the data back in | Laphan | Database | 4 | 07-01-2007 6:24 PM |
| cvs: pear /PHP_Archive Archive.php package.php package.xml /PHP_Archive/Archive Creator.php /PHP_Archive/data phar_frontcontroller.tpl | Greg Beaver | Pear | 0 | 05-20-2007 7:42 PM |
| Featured Websites | ||||
|