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

Форум MySQL

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

 

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

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

тема: Запрос вида "Выбрать все, если этого нет в другой таблице".
 
 автор: Shorr Kan   (27.05.2006 в 19:56)   письмо автору
 
 

То есть... tbl1 содержит столбец aaa . tbl2 - bbb . Мне нужно вывести список всех тех из tbl1.aaa , которых нет в tbl2.bbb ... Это ведь можно одним запросом? Как?

   
 
 автор: cheops   (27.05.2006 в 21:55)   письмо автору
 
   для: Shorr Kan   (27.05.2006 в 19:56)
 

Версия MySQL какая используется - есть возможность использовать вложенные запросы?

   
 
 автор: Shorr Kan   (27.05.2006 в 23:22)   письмо автору
 
   для: cheops   (27.05.2006 в 21:55)
 

Есть... phpinfo говорит, что Client API version 4.1.15 ... я не очень в курсе - позволяет ли эта версия использовать вложенные запросы, но я их использовал уже на этом сервере... Хотя в тот самый момент мне phpinfo врал - говорил, что Client API version 3.x.x ... В общем, вложенные запросы - можно.

   
 
 автор: cheops   (28.05.2006 в 11:54)   письмо автору
 
   для: Shorr Kan   (27.05.2006 в 23:22)
 

Это версия клиентской библиотеки libmysql.dll, при помощи которой PHP соединяется с сервером MySQL... лучше ориентироваться на результаты запроса SELECT VERSION().

   
 
 автор: Shorr Kan   (28.05.2006 в 15:08)   письмо автору
 
   для: cheops   (28.05.2006 в 11:54)
 

select version() - тоже говорит "4.1.15"

   
 
 автор: Trianon   (27.05.2006 в 23:29)   письмо автору
 
   для: Shorr Kan   (27.05.2006 в 19:56)
 

Это один запрос:

SELECT aaa FROM tbl1 LEFT JOIN tbl2 on aaa=bbb WHERE bbb IS NULL 

   
 
 автор: Shorr Kan   (28.05.2006 в 15:12)   письмо автору
 
   для: Trianon   (27.05.2006 в 23:29)
 

Хм... Это работает... Кажется. Спасибо.
Только я не понял - как..

   
 
 автор: Trianon   (28.05.2006 в 20:04)   письмо автору
 
   для: Shorr Kan   (28.05.2006 в 15:12)
 

Конструкция LEFT JOIN строит внешнее (левое) соединение, т.е. такое, когда в результат попадают не только строки соответствия из обеих таблиц, но и строки из левой таблицы, которым не нашлось соответствия в правой. Фильтр WHERE оставляет лишь строки без соответствия, т.е. те, которые Вы хотели получить.

   
 
 автор: Shorr Kan   (29.05.2006 в 09:06)   письмо автору
 
   для: Trianon   (28.05.2006 в 20:04)
 

Ага... благодарю.

   
Rambler's Top100
вверх

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