Разделы

[offtop] SQL запрос

Волею судеб, пришлось при создании сайта на modx писать свой сниппет,
но так как я ни разу ни php ни sql, то некоторые вещи ставят меня в ступор
подскажите пожалуйста:

делаю запрос к таблице:

$id = $modx->documentIdentifier;
$dlist = $modx->db->query ('SELECT id, pagetitle FROM modx_site_content WHERE parent='.$id.' AND published=1');

так же у этих ресурсов, есть TV параметр — total-results — числовое значение.

Как достать тоже разобрался

$document_tvs = $modx->getTemplateVarOutput(true, $idd);
$templatevar_output = $document_tvs['total-results'];


А вот как сделать первый запрос с сортировкой по значению TV параметра?, ведь это разные таблицы.

Ну и в догонку второй вопрос, получив значение другого TV (тип image) как в сниппете к нему применить phx модификатор —

 [*img-news:phpthumbof=`w=65&h=65&zc=1`*]
  • 0
  • 23 февраля 2012, 01:51
  • hippie

Комментарии (7)

RSS свернуть / развернуть
+1
SELECT id, pagetitle
FROM modx_site_content as content, modx_site_templates as tpl, modx_site_tmplvars as tv, modx_site_tmplvar_templates as tvtpl, modx_site_tmplvar_contentvalues as tvcontent
WHERE content.template=tpl.id  
AND tv.id=tvtpl.tmplvarid
AND tvtpl.templateid=tpl.id
AND tvcontent.tmplvarid= tv.id
AND contentid=content.id
AND parent='.$id.'
AND tv.name="total-results"
ORDER BY tv.value ASC( или DESC)


Примерно так :)
avatar

Zevseg

  • 23 февраля 2012, 02:47
0
Большое спасибо, я пробовал по следующему примеру сделать

SELECT table1.id table2.id table2.price FROM table1, table2 WHERE something ORDER BY table1.id ASC|DESC


но что то как то не айс, такие конструкции можно использовать?
avatar

hippie

  • 23 февраля 2012, 02:57
0
Column 'id' in field list is ambiguous
avatar

hippie

  • 23 февраля 2012, 03:19
0
SELECT content.id, pagetitle
avatar

Zevseg

  • 23 февраля 2012, 03:25
0
Большое спасибо! Вроде понял логику, там еще в конце ошибочка
ORDER BY tv.value ASC -> ORDER BY tvcontent.value ASC
avatar

hippie

  • 23 февраля 2012, 03:42
-1
мммм… фигня какая то
при сортировке у него значение 567 больше чем 5432
т.е.у меня они идут по такому порядку
567, 5432, 4324, 43234, 432, 4234, 3445, 2342
в пределах одинаковой разрядности оно конечно отработает как нада. но всё же, как быть?
avatar

hippie

  • 23 февраля 2012, 03:54
0
ORDER BY CAST(tvcontent.value AS SIGNED) DESC');
avatar

hippie

  • 23 февраля 2012, 04:24

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.