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

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

🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
Статус: Offline
Реєстрація: 02.07.2009
Повідом.: 95
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #1
Помогите оптимизировать 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();

или нельзя?
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #2
Посилання видалено

ок
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #3
чувствую что послали, но куда еще не понял :)
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #4
похоже что это он серьезно. ну ок:
Код:
SELECT id FROM #__mapsfo WHERE objurl LIKE "%'.$id.'%"';
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #5
ну и нифига не работает.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #6
Код:
$query = 'SELECT id FROM #__mapsfo WHERE mapid3 = (SELECT mapid3 FROM #__mapsfo WHERE objurl LIKE "%'.$id.'%")';
лол
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #7
а че равно? а если больше записей будет? ставь "in"
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #8
та не, лучше сразу join ыхыхых

ТС: маладец, кажеца началось =)
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #9
ТС ваще пропал после твоей подсказки... ;)
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #10
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #11
ну дык и де результаты о проделанной работе?
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #12
а шо кто-то что-то предложил?
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #13
Код:
$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);
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #14
2 kott
ну и что выдаст ваш код?
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #15
увидишь что оно возвращает
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #16
я отлично вижу, что вернет оно не то что надо.

поле objurl уникально это раз.
вернуть нужно не айдишники по полю objurl, а по полю mapid3 это два.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #17
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #18
да не проблема.

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

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

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

P.S. кто учится имеет право не знать.
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #19
table
id mapid3 objurl
1 3 someurl
2 4 otherurl
3 5 govnokod.ru

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

1
2

ы?
 
  • 🟡 17:30 Відбій тривоги в Харківський район.Зверніть увагу, тривога ще триває у:- Харківський район#Харківський_район
  • #20
да, получим

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

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

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