• Знающие SQL подскажите, а то я туплю. Есть 2 таблицы: scenes и tests. В tests есть поле status, а в scenes есть поле name. Мне нужно сделать выбрать те name для которых соответствующий status=1. Подскажите запросик

Replies (9)

  • @dzeban, Да, забыл сказать. В обоих таблицах есть поле sceneid, котоорым они связаны
  • @dzeban, например так:
    SELECT scenes.name as name FROM tests, scenes WHERE tests.sceneid=scenes.sceneid AND tests.status=1;
  • @dzeban, а как эти таблички связаны между собой?
  • @dzeban, @rise Я же говорю, что и там и там есть поле sceneid
  • @dzeban, @dzeban@jabber.org ясно, извини, не успел прочесть комменты ) я бы сделал так SELECT scenes.name FROM scenes LEFT JOIN tests ON (tests.sceneid=scenes.sceneid) WHERE tests.status=1
  • @dzeban, @dzeban@jabber.org а еще попробуй потестировать, вполне возможно с вложенным селектом будет быстрее. select name from scenes where sceneid in (select sceneid from tests where status=1)
  • @dzeban, @rise вот это как раз не будет быстрее. тут два запроса, хоть и вложенные.
  • @dzeban, @derFeniX счас потестирую. что-то мне подсказывает, что 2 запроса по индексным полям будут быстрее чем джойн двух таблиц. может ты и прав )
  • @dzeban, @rise джоин тоже не лучший вариант. я в коменте привёл нормальный вариант — один запрос из двух таблиц разом, без джоинов.