Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Оставить из массива значения, которых еще нет в таблице
 
 автор: kulibko   (08.11.2007 в 12:46)   письмо автору
 
 

Есть таблица table
И есть массив $arr со значениями типа val1, val2... valn (значений может быть тысячи)
Эти значения могут встречаться в table в поле values
Как выбрать из массива те значения, которые не встречаются еще в таблице?

В общем случае это делается так:

выбрать всё из table where values=val1 or values=val2 or.... 


или же так:

выбрать всё из table where values in (val1, val2.... valn)


Как оптимальнее это делать?

   
 
 автор: olejek   (08.11.2007 в 15:44)   письмо автору
 
   для: kulibko   (08.11.2007 в 12:46)
 

Есть тысячи способов, но, конечно, не так, как Вы написали. Вот один из них.
Не знаю, оптимальный ли. Первое что пришло на ум.

<?
$array
=array(val1val2...valn);
$new_array=array();
$query=mysql_query("select * from table;");
while (
$qr=mysql_fetch_array($query))
    if (!
in_array($array))
        
$new_array[]=$qr["field"];
?>

   
 
 автор: kulibko   (08.11.2007 в 17:19)   письмо автору
 
   для: olejek   (08.11.2007 в 15:44)
 

Если таблица с сотнями тысяч строчек, то в вашем варианте каждую нужно прочитать. Мне кажется что это совсем не оптимально.

   
 
 автор: olejek   (09.11.2007 в 11:56)   письмо автору
 
   для: kulibko   (08.11.2007 в 17:19)
 

А я и не писал, что он оптимальный. Вот еще один из этой тысячи:

$arr_string=implode(",", $arr);
$qr=mysql_query("SELECT * FROM table WHERE id IN (".$arr_string.");") or die (mysql_error());

   
 
 автор: kulibko   (10.11.2007 в 23:19)   письмо автору
 
   для: olejek   (09.11.2007 в 11:56)
 

Ну, это мой второй вариант.
Вопрос в том как наиболее оптимально это делается.
Опытные - подскажите пожалуйста :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования