Змінюй хід війни! Допомагай ЗСУ!

Помогите оптимизировать SQL запрос

  • Автор теми Автор теми Explore
  • Дата створення Дата створення
Статус: Офлайн
Реєстрація: 02.07.2009
Повідом.: 95
Помогите оптимизировать SQL запрос

Одним местом чувствую, что этот запрос можно переписать в одну строку, но не пойму как.

Код:
$query = 'SELECT mapid3 FROM #__mapsfo WHERE objurl LIKE "%'.$id.'%"'; 
$db->setQuery($query);
$m_id = $db->loadResult();

$query = 'SELECT id FROM #__mapsfo WHERE mapid3='.$m_id; 
$db->setQuery($query);
$o_id = $db->loadObjectList();

или нельзя?
 
Посилання видалено

ок
 
чувствую что послали, но куда еще не понял :)
 
похоже что это он серьезно. ну ок:
Код:
SELECT id FROM #__mapsfo WHERE objurl LIKE "%'.$id.'%"';
 
ну и нифига не работает.
 
Код:
$query = 'SELECT id FROM #__mapsfo WHERE mapid3 = (SELECT mapid3 FROM #__mapsfo WHERE objurl LIKE "%'.$id.'%")';
лол
 
а че равно? а если больше записей будет? ставь "in"
 
та не, лучше сразу join ыхыхых

ТС: маладец, кажеца началось =)
 
ТС ваще пропал после твоей подсказки... ;)
 
ну дык и де результаты о проделанной работе?
 
а шо кто-то что-то предложил?
 
Код:
$m_id = $db->loadResult();
$o_id = $db->loadObjectList();

вот никогда бы не догадался, что это гетеры

Код:
$query = 'SELECT id FROM #__mapsfo WHERE objurl LIKE "%'.$id.'%"';
$db->setQuery($query);
$res1 = $db->loadResult();
$res2 = $db->loadObjectList();
echo "<pre>";
print_r(res1);
print_r(res2);
 
2 kott
ну и что выдаст ваш код?
 
увидишь что оно возвращает
 
я отлично вижу, что вернет оно не то что надо.

поле objurl уникально это раз.
вернуть нужно не айдишники по полю objurl, а по полю mapid3 это два.
 
да не проблема.

ок, начнем с начала
мне в моем коде не нравится 2 запроса к одной базе.
в первом у меня получется значение из поля mapid3, где objurl LIKE "%'.$id.'%" такая строка одна.

во втором IDшники, где mapid3 равно полученному выше значению. Этих строк массив

это реально переписать одним запросом?

P.S. кто учится имеет право не знать.
 
table
id mapid3 objurl
1 3 someurl
2 4 otherurl
3 5 govnokod.ru

если мы выполним SELECT id FROM table WHERE objurl LIKE '%url%' то получим две строчки:

1
2

ы?
 
да, получим

но условия другие немного

table
id mapid3 objurl
1 3 someurl1
2 3 otherurl2
3 2 otherurl3
4 5 govnokod.ru

входной параметр "url1"
а получить надо строки 1 и 2
?
 
Назад
Зверху Знизу