За последние 24 часа нас посетили 16497 программистов и 1677 роботов. Сейчас ищут 938 программистов ...

Чем заменить in ()

Тема в разделе "MySQL", создана пользователем inline, 15 окт 2012.

  1. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    Код (Text):
    1. select mixbrands.* from mixbrands where id in (select idmix from mixbrandsrels where idmy in ( select code_brand from model where code_type in (select idmy from mixtypesrels where idmix=138608) group by code_brand))
    Как этот запрос сделать без in-ов ?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    зачем?
     
  3. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Код (Text):
    1.  
    2. SELECT mb.*
    3. FROM MIXBRANDS MB
    4. INNER JOIN MIXBRANDSRELS MBR ON MBR.IDMIX=MB.ID
    5. INNER JOIN MODEL M ON M.CODE_BRAND=MBR.IDMY
    6. INNER JOIN MIXTYPESRELS MTR ON MTR.IDMY=M.CODE_TYPE
    7. WHERE mtr.idmix=138608
    попробуйте
     
  4. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    запрос с инами загибает сервер
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.251
    Адрес:
    там-сям
    Загибает сервер запрос, по которому сервер не может использовать индексы. Сделай их и живи.
     
  6. inline

    inline Активный пользователь

    С нами с:
    21 май 2010
    Сообщения:
    466
    Симпатии:
    0
    а как использовать JOIN в таком запросе
    Код (Text):
    1. select * from ".$site."_posts where ID in (select object_id from ".$site."_term_relationships where term_taxonomy_id = ( select term_id from ".$site."_terms where name='"._iconv("НОВОСТИ")."')) and post_status='publish'
    заменить тот же in нужно
     
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    попробуйте
    Код (PHP):
    1. select p.* 
    2. from ".$site."_posts p
    3. INNER join ".$site."_term_relationships rs ON rs.object_id=p.ID
    4. INNER JOIN ".$site."_terms t ON (t.select term_id=rs.term_taxonomy_id AND t.name='"._iconv("НОВОСТИ")."')
    5. Where p.post_status='publish'