Re: [PHP] MySQL select matching

2010-07-21 Thread Simcha Younger
On Mon, 19 Jul 2010 10:36:40 -0600
Ashley M. Kirchner ash...@pcraft.com wrote:


 mysql select * from table where id='1';
 +---+-+-+---+
 | 1 | 123 | 0.0 | C |
 | 1 | 234 | 0.1 | D |
 | 1 | 345 | 0.0 | D |
 | 1 | 456 | 0.1 | C |
 | 1 | 567 | 0.1 | G |
 +---+-+-+---+
 
  Now, I have to find other IDs that match the above result.  In the 
 table, that would be ID '3' (and in the entire DB, there may be 
 others as well - I need to find all those IDs.)  But, notice how ID 0003 
 isn't in the same order as ID 1, but the data is still the same.
 
select distinct id from `table` where concat(`b`, `c`, `d`) in (select 
concat(`b`,`c`,`d` from `table` where id = '0001') AND id != '0001';
(untested)

-- 
Simcha Younger sim...@syounger.com

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



[PHP] MySQL select matching

2010-07-19 Thread Ashley M. Kirchner


I may be going at this completely wrong but at the moment I'm 
stuck.  I have a DB from a client and need to do several searches on 
it.  This one sentence is important because it's their DB, not mine.  So 
I can't modify the way the DB was created in the first place, I can only 
work with what I have.  And, whatever the solution to this might be, it 
does NOT have to be strictly MySQL, it can also be a PHP solution (which 
is why I'm sending it there as well.)  So, having said that, consider 
the following table:


+---+-+-+---+
| 1 | 123 | 0.0 | C |
| 1 | 234 | 0.1 | D |
| 1 | 345 | 0.0 | D |
| 1 | 456 | 0.1 | C |
| 1 | 567 | 0.1 | G |
| 2 | 123 | 0.0 | C |
| 2 | 234 | 0.1 | D |
| 2 | 345 | 0.0 | D |
| 3 | 234 | 0.1 | D |
| 3 | 345 | 0.0 | D |
| 3 | 123 | 0.0 | C |
| 3 | 456 | 0.1 | C |
| 3 | 567 | 0.1 | G |
| 4 | 123 | 0.0 | C |
| 4 | 234 | 0.1 | D |
| 4 | 345 | 0.0 | D |
+---+-+-+---+

mysql select * from table where id='1';
+---+-+-+---+
| 1 | 123 | 0.0 | C |
| 1 | 234 | 0.1 | D |
| 1 | 345 | 0.0 | D |
| 1 | 456 | 0.1 | C |
| 1 | 567 | 0.1 | G |
+---+-+-+---+

Now, I have to find other IDs that match the above result.  In the 
table, that would be ID '3' (and in the entire DB, there may be 
others as well - I need to find all those IDs.)  But, notice how ID 0003 
isn't in the same order as ID 1, but the data is still the same.


So how do I efficiently search through the DB to find other IDs 
that matches the one I need?  I can't imagine doing a for loop selecting 
each ID and comparing their result to the one I'm starting with.  If the 
DB contains thousands upon thousands of rows, that might take a very 
long time.


Open to suggestions.

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