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

Форум MySQL

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

 

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

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

тема: несложный вопрос
 
 автор: 111   (03.02.2008 в 21:31)   письмо автору
 
 

Я знаком с mysql ьма поверхностно. Но сейчас возникла необходимость кое-что сделать в БД. Был бы очень признателен, если бы Вы написали запрос, который решит следующую задачу.
Есть таблица "1", состоящая из колонки "s2" и таблица "2", состоящая из колонки "s2". значения в колонках в разных таблицах разные. Какой запрос mysql нужно написать чтобы:
выбрать все значения которые есть в таблице 1 и которых нет в таблице 2?

Фактически операция вычитание над множеством - из множества 1 нужно вычесть множество 2.

   
 
 автор: dobryy   (03.02.2008 в 21:38)   письмо автору
 
   для: 111   (03.02.2008 в 21:31)
 

Можно попробовать так:
SELECT * FROM `1` WHERE `имя_поля` NOT IN (SELECT * FROM `2`);

   
 
 автор: 111   (03.02.2008 в 21:42)   письмо автору
 
   для: dobryy   (03.02.2008 в 21:38)
 

Но ведь таким образом мне придется все значения перебирать? Их там больше тысячи.
Мне нужно чтобы за одну операцию все значения перебрались

   
 
 автор: Dobryy   (03.02.2008 в 21:48)   письмо автору
 
   для: 111   (03.02.2008 в 21:42)
 

как по мне это лучший вариант :), правда я не проверял или работает.

<?
$query 
mysql_query("SELECT * FROM `1` WHERE `имя_поля` NOT IN (SELECT * FROM `2`);");

while (
$array mysql_fetch_assoc) {
    
$data[] = $array;
}

print_r($data);
?>

   
 
 автор: 111   (03.02.2008 в 22:02)   письмо автору
 
   для: Dobryy   (03.02.2008 в 21:48)
 

А без пхп можно? Чтобы только запрос к БД?

   
 
 автор: Dobryy   (03.02.2008 в 22:04)   письмо автору
 
   для: 111   (03.02.2008 в 22:02)
 

Запрос я писал выше, это он и есть:
SELECT * FROM `1` WHERE `имя_поля` NOT IN (SELECT * FROM `2`);

Любой мускульный клиент вернет все записи из таблицы 1 исключая похожие записи из таблицы 2

   
 
 автор: Trianon   (03.02.2008 в 22:27)   письмо автору
 
   для: Dobryy   (03.02.2008 в 22:04)
 

клиент может и любой, а вот сервер (если младше 4.1) - врядли...

SELECT `1`.s2 
  FROM `1` 
    LEFT JOIN `2` ON `1`.s2 =`2`.s2 
  WHERE `2`.s2 IS NULL

   
 
 автор: Dobryy   (03.02.2008 в 22:32)   письмо автору
 
   для: Trianon   (03.02.2008 в 22:27)
 

+1 =)

   
Rambler's Top100
вверх

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