|
|
|
| Есть 3 таблицы: data, model, marka (таблица данных, таблица с моделями авто, таблица с макрами машин)
Из таблицы data нужно выбрать уникальные model_id Это я сделал SELECT DISTINCT (model_id) FROM data
А теперь мне нужно из таблицы marka выбрать уникальные марки, модели которых выбрались в первом запросе. Проблема в том, что у одной марки могут быть несколько моделей и при выборке должна быть всего лишь 1 марка. | |
|
|
|
|
|
|
|
для: zsaz
(28.02.2011 в 04:55)
| | Следующий запрос проблему не решает?
SELECT DISTINCT (marka_id) FROM marka
WHERE model_id IN (SELECT DISTINCT (model_id) FROM data)
|
Если нет, нужно бы более подробно описать ситуацию. | |
|
|
|
|
|
|
|
для: cheops
(28.02.2011 в 10:42)
| | Спасибо, по вашим записям я составил нужный для себя запрос
"SELECT DISTINCT (`id`), `marka` FROM `marka` WHERE `id` IN (SELECT DISTINCT(`marka_id`) FROM models WHERE id IN(SELECT DISTINCT(`model_id`) FROM `photo`)) ORDER BY marka"
Но у меня возникла проблема. Информация обрабатывается очень долго (порядка 20-30 секунд), т.к. записей много и они будут расти очень сильно.
в таблице photo ~ 500 записей
в таблице model_id ~ 1500 записей
в таблице marka ~ 90 записей
Будет сильно расти только таблица photo до тысяч и десятков тысяч записей.
Как сделать, чтобы запрос выполнялся быстрее??? | |
|
|
|
|
|
|
|
для: zsaz
(28.02.2011 в 18:29)
| | Поля id, marka_id и model_id индексированы? Если нет, нужно проиндексировать. | |
|
|
|