Re: slightly OT: need an unusual find condition (or possible custom query)

2009-01-28 Thread Martin Westin

Thanks AD,
I did have an nagging suspicion that this would require something like
that with temporary tables and things.

What I did for now (until I do some performance testing on it and in
case anyone find it useful) was:
1. A deleteAll using a NOT condition. Deletes anything that does not
match my list of ids.
2. A find(list) of what is left.
3. Loop my list of ids and test each against the ones found in the
database using in_array()
4. A saveAll to save any ids that were new (not in the array).

As you can see quite a few steps but is if reasonable efficient for
now. But, a big thank you for the example with the temp table, I
suspect it will come in handy quite soon.

/Martin


On Jan 26, 7:56 pm, AD7six andydawso...@gmail.com wrote:
 On Jan 26, 2:35 pm, Martin Westin martin.westin...@gmail.com wrote:



  Hi,
  I am in need of an unusual query that I find it hard to search for on
  Google or MySQL.com since all the terms I think of are very common
  ones. Hopefully someone reading this can guide me in the right
  direction.

  I have a series of values in an array. I can find out which records
  have matching values by passing this array as a condition to get a
  WHERE somefield IN (value1,value2) clause.

  I can also find which records have non-matching fields by using a
  WHERE NOT(...) clause. Finding the orphans in the database so to
  speak.

  Of-course I want something else. I want to find out which values in my
  array do not match a record in the database. Finding the orphans in my
  array so to speak. I have not figured out how to do this without using
  the IN clause and then comparing the results. Since this is
  expensive (looping arrays take time) I really wanted to find an SQL-
  way that would be less expensive.

  SELECT VALUES IN MY ARRAY THAT DO NOT FIND ANY MATCHING RECORD -
  sort of.

  Any guidance would be appreciated
  /Martin

 There's probably a more elegant way, This'd work:

 DROP TABLE `tmp`;
  CREATE TABLE `tmp` (
 `id` INT( 11 ) NULL
 ) ENGINE = MEMORY;
 INSERT INTO `tmp` (
 `id`
 )
 VALUES (1),(2),(3),(4),(5); # The values you want to search for

 select `tmp`.`id` from `mytable` RIGHT JOIN `tmp` on
 `mytable`.`somefield` = `tmp`.`id` WHERE `mytable`.`somefiled` IS
 NULL;

 Anything returned is a `mytable`.`somefield` that doesn't exist.

 AD
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



slightly OT: need an unusual find condition (or possible custom query)

2009-01-26 Thread Martin Westin

Hi,
I am in need of an unusual query that I find it hard to search for on
Google or MySQL.com since all the terms I think of are very common
ones. Hopefully someone reading this can guide me in the right
direction.

I have a series of values in an array. I can find out which records
have matching values by passing this array as a condition to get a
WHERE somefield IN (value1,value2) clause.

I can also find which records have non-matching fields by using a
WHERE NOT(...) clause. Finding the orphans in the database so to
speak.

Of-course I want something else. I want to find out which values in my
array do not match a record in the database. Finding the orphans in my
array so to speak. I have not figured out how to do this without using
the IN clause and then comparing the results. Since this is
expensive (looping arrays take time) I really wanted to find an SQL-
way that would be less expensive.

SELECT VALUES IN MY ARRAY THAT DO NOT FIND ANY MATCHING RECORD -
sort of.

Any guidance would be appreciated
/Martin
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: slightly OT: need an unusual find condition (or possible custom query)

2009-01-26 Thread brian

I think you'll need to loop through the array with find('count').

On Mon, Jan 26, 2009 at 8:35 AM, Martin Westin
martin.westin...@gmail.com wrote:

 Hi,
 I am in need of an unusual query that I find it hard to search for on
 Google or MySQL.com since all the terms I think of are very common
 ones. Hopefully someone reading this can guide me in the right
 direction.

 I have a series of values in an array. I can find out which records
 have matching values by passing this array as a condition to get a
 WHERE somefield IN (value1,value2) clause.

 I can also find which records have non-matching fields by using a
 WHERE NOT(...) clause. Finding the orphans in the database so to
 speak.

 Of-course I want something else. I want to find out which values in my
 array do not match a record in the database. Finding the orphans in my
 array so to speak. I have not figured out how to do this without using
 the IN clause and then comparing the results. Since this is
 expensive (looping arrays take time) I really wanted to find an SQL-
 way that would be less expensive.

 SELECT VALUES IN MY ARRAY THAT DO NOT FIND ANY MATCHING RECORD -
 sort of.

 Any guidance would be appreciated
 /Martin
 


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---



Re: slightly OT: need an unusual find condition (or possible custom query)

2009-01-26 Thread AD7six



On Jan 26, 2:35 pm, Martin Westin martin.westin...@gmail.com wrote:
 Hi,
 I am in need of an unusual query that I find it hard to search for on
 Google or MySQL.com since all the terms I think of are very common
 ones. Hopefully someone reading this can guide me in the right
 direction.

 I have a series of values in an array. I can find out which records
 have matching values by passing this array as a condition to get a
 WHERE somefield IN (value1,value2) clause.

 I can also find which records have non-matching fields by using a
 WHERE NOT(...) clause. Finding the orphans in the database so to
 speak.

 Of-course I want something else. I want to find out which values in my
 array do not match a record in the database. Finding the orphans in my
 array so to speak. I have not figured out how to do this without using
 the IN clause and then comparing the results. Since this is
 expensive (looping arrays take time) I really wanted to find an SQL-
 way that would be less expensive.

 SELECT VALUES IN MY ARRAY THAT DO NOT FIND ANY MATCHING RECORD -
 sort of.

 Any guidance would be appreciated
 /Martin

There's probably a more elegant way, This'd work:

DROP TABLE `tmp`;
 CREATE TABLE `tmp` (
`id` INT( 11 ) NULL
) ENGINE = MEMORY;
INSERT INTO `tmp` (
`id`
)
VALUES (1),(2),(3),(4),(5); # The values you want to search for

select `tmp`.`id` from `mytable` RIGHT JOIN `tmp` on
`mytable`.`somefield` = `tmp`.`id` WHERE `mytable`.`somefiled` IS
NULL;

Anything returned is a `mytable`.`somefield` that doesn't exist.

AD

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to 
cake-php+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~--~~~~--~~--~--~---