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

Форум MySQL

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

 

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

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

тема: Как выбрать строки с таблицы, ключ которых встречатся хотя бы один раз в другой таблице?
 
 автор: p.pavluxa   (03.10.2015 в 19:51)   письмо автору
 
 

Здравствуйте. Есть две таблицы.

Таблица 1: ID (цифра, первичный ключ), ...
Таблица 2: ID (цифра, первичный ключ), iTableID (цифра, индекс, ключ из таблицы 1), iStatus (цифра статуса)

Нужно сделать запрос к таблице 1 который вернёт все строки iID которых есть в колонке iTableID второй таблицы (хотя бы 1), при этом iStatus у второй таблицы должен быть равен 0.

Мой вариант:
SELECT * FROM Table1 WHERE (SELECT COUNT(*) FROM Table2 WHERE Table2.iTableID = Table1.iID AND Table2.iStatus = 0) > 0

Но этот код очень долго выполняется и сжирает очень много ресурсов (так как строк во второй таблице очень много). Пожалуйста, подскажите как его можно оптимизировать?

  Ответить  
 
 автор: KPETuH   (05.10.2015 в 10:36)   письмо автору
 
   для: p.pavluxa   (03.10.2015 в 19:51)
 

Примерно, как то так:
SELECT `Table1`.*
FROM  `Table1`
JOIN `Table2` ON `Table2`.`iTableID` = `Table1`.`iID` AND `Table2`.`iStatus` = 0
GROUP BY `Table1`.`iID`

  Ответить  
Rambler's Top100
вверх

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