This is what I tried to find an entry in the column, but it doesn't work for some reason. This is a download center, and I want to se if $cfpd[5] has already been downloaded.
my ($dls, @downloads); $query = qq{ SELECT downloads,bytesdown,filesdown FROM $utable WHERE handle=? }; $sth = $dbh->prepare ( $query ); $sth->execute ($user); $sth->bind_col(1, \$dls); while ($sth->fetch) { @downloads = split(/:/,$dls); } push(@downloads,$cfpd[5]); # added this part to find item $already_downloaded = 0; foreach $dl_file (@downloads) { if ($dl_file eq $cfpd[5]) { $already_downloaded = 1; last; } } if ($already_downloaded eq 0) { # end addition my $downloads = join(':',@downloads); if ($dl =~ /$song$/) { $query = qq{ UPDATE $utable SET dlcounter=dlcounter-1, downloads=?, bytesdown=bytesdown+$fsize, filesdown=filesdown+1 WHERE handle=? }; }elsif ($dl =~ /$video$/) { $query = qq{ UPDATE $utable SET dlcounter=dlcounter-3, downloads=?, bytesdown=bytesdown+$fsize, filesdown=filesdown+1 WHERE handle=? }; } $sth = $dbh->prepare ( $query ); $sth->execute ($downloads,$user); Any ideas? On Sat, 29 Nov 2003 00:53:10 +0100 "Hans van Harten" <[EMAIL PROTECTED]> wrote: > [EMAIL PROTECTED] wrote: > >> From: Bruce Therrien <[EMAIL PROTECTED]> > >> Date: 2003/11/28 Fri PM 01:42:14 CST > >> To: [EMAIL PROTECTED] > >> Subject: Retrieving info from a Joined column > >> > >> We have a column in our table that has > >> new info added each time using a JOIN function. > The data sample makes me rather think > update table set field=CONCATE(field,':','more') > > >> The data is separated using a : separator. > > This doesn't answer your question... > > However, note that in most instances using columns with multiple > > values is a bad idea in a relational database. If possible, you'd be > > better off with a design that does not require multiple values in a > > single column. > I'ld second that. However, to maintain compatible output to your Perl script > consider GROUP_CONCAT http://www.mysql.com/doc/en/GROUP-BY-Functions.html > > >> How does one retrieve this info from the colomn and put it > >> into list format, > In Perl there is 'split'; takes a 'field delimiter and a string to return an > array of strings. > > >> or check for duplicates, > Using 'where NOT( field LIKE '9807:' and field LIKE ':9807' and field LIKE > ':9807:' ' ) within your UPDATE should do the tric > > >> or do a search in the column for a certan string. > On an existing data base you might consider LIKE > ... where field LIKE '9807:' and field LIKE ':9807' and field LIKE ':9807:' > Adding a ':' to both the beginning and end of the content would obsolete the > first and second part of the above. > However, you need to 'shift' and 'pop' a pair of empty fields in Perl AND > change to CONCATE(field,'more',':') > > HansH > > > -- > MySQL General Mailing List > For list archives: http://lists.mysql.com/mysql > To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED] -- Bruce Therrien <[EMAIL PROTECTED]> -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]