RE: [PHP] php/mysql join query help

2002-05-23 Thread John Holmes

You can run an update query and change the | to , to use FIND_IN_SET, or
write a simple script that separates everything.

Do you have access to the script that's putting IN the data?

---John Holmes...

> -Original Message-
> From: Miguel Cruz [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, May 23, 2002 3:06 PM
> To: [EMAIL PROTECTED]
> Subject: Re: [PHP] php/mysql join query help
> 
> The sooner you fix it, the less work you have to do down the road!
> 
> miguel
> 
> On Thu, 23 May 2002, ROBERT MCPEAK wrote:
> 
> > I appreciate you help.  I inherited the pipe-delimited data.  I
would
> > have done it as you suggested.
> >
> > Thanks.
> >
> > -Bob
> >
> > >>> "1LT John W. Holmes" <[EMAIL PROTECTED]> 05/23/02 01:57PM
> > >>>
> > It's generally a bad idea to store delimited data in a single column
in
> > a
> > database. It kind of goes against what a database is there for. A
> > better
> > layout would be to have your second table contain a row for each of
> > the
> > "delimited" values.
> >
> > So if you have '1,2,3,4' in your database now, the better way would
be
> > to
> > have four rows, 1 through 4 in the table instead, with whatever
other
> > info
> > you keep for each row. Then a simple SELECT var, COUNT(var) FROM
table
> > will
> > give you the answers you're looking for.
> >
> > but...if you want to leave it the way it is, then you can use some
kind
> > of
> > matching to find the rows using LIKE. I couldn't get a query to
work,
> > though. If your data can be seperated by commas, an easy way to do
it
> > is
> > with something like this
> >
> > SELECT table1.key, COUNT(*) FROM table1, table2 WHERE
> > FIND_IN_SET(table1.key,table2.keys) GROUP BY table1.key
> >
> > But, the flaw of that is that it'll only count one occurance of
> > table1.key
> > per row in table2. If a row has 'blue' twice, only one will be
> > counted.
> >
> > ---John Holmes...
> >
> > - Original Message -
> > From: "ROBERT MCPEAK" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Thursday, May 23, 2002 1:22 PM
> > Subject: [PHP] php/mysql join query help
> >
> >
> > > I have a table with a field "key" containing a unique value.  I
have
> > a
> > > second table containing a field called "keys" containg a
> > pipe-delimited
> > > list of values from the "key" table.
> > >
> > > I'd like to do a query that took each value from key, and matched
it
> > > agains the field "keys" in the second table, and returned a third
> > table
> > > of unique key values from the first table, and number of matches
> > from
> > > the second table.
> > >
> > > I've already set up a full text index for the values in the second
> > > table and have done successful matches in simpler queries.
> > >
> > > Make sense?
> > >
> > > The table I'd like to generate might look like this:
> > >
> > > key matches
> > > blue 50
> > > yellow 6
> > > green 29
> > >
> > > This would indicate that there were 3 key values in the first
table
> > > (blue, yellow, green), and, respectively, there were 50, 6, and 20
> > > matches for each term in the second table.
> > >
> > > Can somebody help me do this?
> > >
> > > Thanks!
> > >
> > > -Bob
> > >
> > > --
> > > PHP General Mailing List (http://www.php.net/)
> > > To unsubscribe, visit: http://www.php.net/unsub.php
> > >
> >
> >
> >
> 
> 
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] php/mysql join query help

2002-05-23 Thread Miguel Cruz

The sooner you fix it, the less work you have to do down the road!

miguel

On Thu, 23 May 2002, ROBERT MCPEAK wrote:

> I appreciate you help.  I inherited the pipe-delimited data.  I would
> have done it as you suggested.
> 
> Thanks.
> 
> -Bob
> 
> >>> "1LT John W. Holmes" <[EMAIL PROTECTED]> 05/23/02 01:57PM
> >>>
> It's generally a bad idea to store delimited data in a single column in
> a
> database. It kind of goes against what a database is there for. A
> better
> layout would be to have your second table contain a row for each of
> the
> "delimited" values.
> 
> So if you have '1,2,3,4' in your database now, the better way would be
> to
> have four rows, 1 through 4 in the table instead, with whatever other
> info
> you keep for each row. Then a simple SELECT var, COUNT(var) FROM table
> will
> give you the answers you're looking for.
> 
> but...if you want to leave it the way it is, then you can use some kind
> of
> matching to find the rows using LIKE. I couldn't get a query to work,
> though. If your data can be seperated by commas, an easy way to do it
> is
> with something like this
> 
> SELECT table1.key, COUNT(*) FROM table1, table2 WHERE
> FIND_IN_SET(table1.key,table2.keys) GROUP BY table1.key
> 
> But, the flaw of that is that it'll only count one occurance of
> table1.key
> per row in table2. If a row has 'blue' twice, only one will be
> counted.
> 
> ---John Holmes...
> 
> - Original Message -
> From: "ROBERT MCPEAK" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Thursday, May 23, 2002 1:22 PM
> Subject: [PHP] php/mysql join query help
> 
> 
> > I have a table with a field "key" containing a unique value.  I have
> a
> > second table containing a field called "keys" containg a
> pipe-delimited
> > list of values from the "key" table.
> >
> > I'd like to do a query that took each value from key, and matched it
> > agains the field "keys" in the second table, and returned a third
> table
> > of unique key values from the first table, and number of matches
> from
> > the second table.
> >
> > I've already set up a full text index for the values in the second
> > table and have done successful matches in simpler queries.
> >
> > Make sense?
> >
> > The table I'd like to generate might look like this:
> >
> > key matches
> > blue 50
> > yellow 6
> > green 29
> >
> > This would indicate that there were 3 key values in the first table
> > (blue, yellow, green), and, respectively, there were 50, 6, and 20
> > matches for each term in the second table.
> >
> > Can somebody help me do this?
> >
> > Thanks!
> >
> > -Bob
> >
> > --
> > PHP General Mailing List (http://www.php.net/)
> > To unsubscribe, visit: http://www.php.net/unsub.php 
> >
> 
> 
> 


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] php/mysql join query help

2002-05-23 Thread ROBERT MCPEAK

I appreciate you help.  I inherited the pipe-delimited data.  I would
have done it as you suggested.

Thanks.

-Bob

>>> "1LT John W. Holmes" <[EMAIL PROTECTED]> 05/23/02 01:57PM
>>>
It's generally a bad idea to store delimited data in a single column in
a
database. It kind of goes against what a database is there for. A
better
layout would be to have your second table contain a row for each of
the
"delimited" values.

So if you have '1,2,3,4' in your database now, the better way would be
to
have four rows, 1 through 4 in the table instead, with whatever other
info
you keep for each row. Then a simple SELECT var, COUNT(var) FROM table
will
give you the answers you're looking for.

but...if you want to leave it the way it is, then you can use some kind
of
matching to find the rows using LIKE. I couldn't get a query to work,
though. If your data can be seperated by commas, an easy way to do it
is
with something like this

SELECT table1.key, COUNT(*) FROM table1, table2 WHERE
FIND_IN_SET(table1.key,table2.keys) GROUP BY table1.key

But, the flaw of that is that it'll only count one occurance of
table1.key
per row in table2. If a row has 'blue' twice, only one will be
counted.

---John Holmes...

- Original Message -
From: "ROBERT MCPEAK" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, May 23, 2002 1:22 PM
Subject: [PHP] php/mysql join query help


> I have a table with a field "key" containing a unique value.  I have
a
> second table containing a field called "keys" containg a
pipe-delimited
> list of values from the "key" table.
>
> I'd like to do a query that took each value from key, and matched it
> agains the field "keys" in the second table, and returned a third
table
> of unique key values from the first table, and number of matches
from
> the second table.
>
> I've already set up a full text index for the values in the second
> table and have done successful matches in simpler queries.
>
> Make sense?
>
> The table I'd like to generate might look like this:
>
> key matches
> blue 50
> yellow 6
> green 29
>
> This would indicate that there were 3 key values in the first table
> (blue, yellow, green), and, respectively, there were 50, 6, and 20
> matches for each term in the second table.
>
> Can somebody help me do this?
>
> Thanks!
>
> -Bob
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php 
>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php 


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




Re: [PHP] php/mysql join query help

2002-05-23 Thread 1LT John W. Holmes

It's generally a bad idea to store delimited data in a single column in a
database. It kind of goes against what a database is there for. A better
layout would be to have your second table contain a row for each of the
"delimited" values.

So if you have '1,2,3,4' in your database now, the better way would be to
have four rows, 1 through 4 in the table instead, with whatever other info
you keep for each row. Then a simple SELECT var, COUNT(var) FROM table will
give you the answers you're looking for.

but...if you want to leave it the way it is, then you can use some kind of
matching to find the rows using LIKE. I couldn't get a query to work,
though. If your data can be seperated by commas, an easy way to do it is
with something like this

SELECT table1.key, COUNT(*) FROM table1, table2 WHERE
FIND_IN_SET(table1.key,table2.keys) GROUP BY table1.key

But, the flaw of that is that it'll only count one occurance of table1.key
per row in table2. If a row has 'blue' twice, only one will be counted.

---John Holmes...

- Original Message -
From: "ROBERT MCPEAK" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, May 23, 2002 1:22 PM
Subject: [PHP] php/mysql join query help


> I have a table with a field "key" containing a unique value.  I have a
> second table containing a field called "keys" containg a pipe-delimited
> list of values from the "key" table.
>
> I'd like to do a query that took each value from key, and matched it
> agains the field "keys" in the second table, and returned a third table
> of unique key values from the first table, and number of matches from
> the second table.
>
> I've already set up a full text index for the values in the second
> table and have done successful matches in simpler queries.
>
> Make sense?
>
> The table I'd like to generate might look like this:
>
> key matches
> blue 50
> yellow 6
> green 29
>
> This would indicate that there were 3 key values in the first table
> (blue, yellow, green), and, respectively, there were 50, 6, and 20
> matches for each term in the second table.
>
> Can somebody help me do this?
>
> Thanks!
>
> -Bob
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php