|
|
|
| Здравствуйте. Есть две таблицы.
Таблица 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
Но этот код очень долго выполняется и сжирает очень много ресурсов (так как строк во второй таблице очень много). Пожалуйста, подскажите как его можно оптимизировать? | |
|
|
|
|
|
|
|
для: 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`
|
| |
|
|
|