Mysql Помогите разобраться с запросом

Cardee

Новичок
Код:
select * from table1;
+--------+----------+
| id     | name     |
+--------+----------+
|      1 |    name1 |
+--------+----------+
select * from table2;
+--------+----------+----------+
| id     | prop     | value    |
+--------+----------+----------+
|      1 |    prop1 |   value1 |
+--------+----------+----------+
|      1 |    prop2 |   value2 |
+--------+----------+----------+
|      1 |    prop3 |   value3 |
+--------+----------+----------+
|      1 |    prop4 |   value4 |
+--------+----------+----------+
Первым делам происходит поиск table.id где table2.prop = "prop4" и table2.value = "value4"
Потом получаем table1.id, table1.name, table2.prop, table2.value где table2.prop IN ( "prop1", "prop2" )

Не могу понять как в одном запросе это сделать. Подскажите пожалуйста.
 

Cardee

Новичок
Сейчас у меня запрос выглядит так
Код:
SELECT `t1`.`id`, `table1`.`name`, `table2`.`prop`, `table2`.`value`
FROM (
        SELECT `table1`.`id`
        FROM `table1`
        INNER JOIN `table2` ON `table1`.`id` = `table2`.`id`
        WHERE `table2`.`prop` = "prop4" AND `table2`.`value` = "value4"
    ) AS `t1`
INNER JOIN `table1` ON `table1`.`id` = `t1`.`id`
INNER JOIN `table2` ON `table2`.`id` = `t1`.`id`
WHERE `table2`.`prop` IN ( "prop1", "prop2" )
 

WMix

герр M:)ller
Партнер клуба
Код:
select  t1.id, t1.name, t2.prop, t2.value
from table1 t1
inner join table2 t2 ON t2.id = t1.id
where t1.id in(
    select id
    from table2
    where prop = "prop4" AND value = "value4"
)
and t2.prop IN ( "prop1", "prop2" )
 

Cardee

Новичок
@WMix, Спасибо, правда я не понял в чём принципиальная разница, или так просто быстрее?
 

AnrDaemon

Продвинутый новичок
EXPLAIN обоих запросов смотри.
Что ты там нагородил, я с трёх попыток не понял…
 

Cardee

Новичок
@AnrDaemon, у меня в первой таблице находятся записи с id (primary, autoincrement) и наименованиями, во второй реквизиты этой записи. Мне нужно по реквизиту определить id и наименование из первой таблицы и также получить определенные реквизиты из таблицы 2
 

AnrDaemon

Продвинутый новичок
Это я понял. Я не понял, что ты наворотил в запросе.
 
Сверху