- 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% на первый месяц обслуживания! При переходе по баннеру - скидка 25% на первый месяц обслуживания!