Сделано в Раскрутке

Архив эхоконференции RU.PHP

- RU.PHP ------------------------------------------------------------- RU.PHP -
 Msg  : #7046 [560]
 От   : Andrew Lening                 2:5026/49.11        08 марта 04, 21:27
 Кому : Dmitry S Ivanov                                   09 марта 04, 20:30
 Тема : запрос
-------------------------------------------------------------------------------
   Hi, Dmitry!

 DI>>> Есть сабжик на mysql вида
 DI>>> SELECT  * FROM main WHERE name IN (select name from main where
 DI>>> id=$id) and model IN (select model from  main where id=$id) and
 DI>>> category = 'test' ORDER BY name, model
 AL>> Скорее всего, там старый мыскл, который вложенные селекты не умеет
 AL>> (они афаир не так давно появились). Переписать запрос: убрать звезду
 AL>> :-) написать его на джойнах (кстати, если я правильно понял, тебе
 AL>> так или иначе не нужны тормозящие запросы с IN).
 DI> Почитал доку по mysql и ничего про joinы не понял =(
Ет ты очень напрасно, без них от sql'а остаются рожки да ножки :-)

 DI> можешь  подсказать как можно переделать данный запрос что бы
 DI> нормально работало?
select
  m1.*
from
  main m1 inner join main m2 on
    (m2.id=?id and m1.name=m2.name and m1.model=m2.model)

Работать должно, только это так или иначе корявость - тут не так надо делать.

Если я правильно понял, запрос должен выбирать из таблицы все позиции, у
которых MODEL и NAME такие же, как у позиции с заданным ID, верно? Тогда что
тебе мешает сделать два запроса - первым выбрать соответствующие NAME и MODEL, 
вторым - выбрать все нужные позиции
(тупо: select * from main where name=?name and model=?model)
Это, по идее, самый кошерный вариант.

   Bye.
--- carpe diem
 * Origin: Godsmack - Straight Out Of Line (2:5026/49.11)


При переходе по баннеру - скидка 25% на первый месяц обслуживания!
Самый простой способ получить ROOT-доступ
При переходе по баннеру - скидка 25% на первый месяц обслуживания!