Есть такой кусок кода: $sql = "SELECT u.id, u.name, u.username, u.block, DATE_FORMAT(u.registerDate, '%d.%m.%Y') as registerDate, scu.status, sca.city, scu.status2, scu.dog_send, scu.upload, scu.params" . "\n FROM #__users as u" . "\n INNER JOIN #__scusers as scu ON(scu.user_id = u.id)" . "\n INNER JOIN #__scaddress as sca ON(sca.user_id = u.id)" . $where . $orderby ; как объеденить запрос inner join! у меня сейчас от такого запроса вывод таблицы двоиться, удаляешь нижнюю строчку inner join нечего не двоиться но данные из таблицы #__scaddress не загружаються в мой вывод! помогите плиз!
Если что-то двоится, можно добавить DISTINCT SELECT DISTINCT u.id, u.name.... и т.д. или добавить группировку после $orderby . $orderby ."\n GROUP BY u.id"
В подобных запросах FROM:JOIN работает как 1:M. Т.е. неважно сколько в таблице JOIN записей (1-2-10-миллион), они все выведутся. В Вашем случае, наверняка в scaddress есть две записи связанные с users - т.е. запрос работает нормально. По хорошему Вам надо изменить структуру БД. А без изменения структуры - использовать другой запрос, чтобы получить то, что Вы хотите.
добавил DISTINCT теперь частично двоиться)) ID выводит так 310,309,309,308,307,306,305,305))) что делать?
neverlose красавец)))) SELECT DISTINCT частично перестало двоить добавил потом ."\n GROUP BY u.id" и все шикарно выводиться)) спасибо тебе)
Блин с функцией . "\n GROUP BY u.id DESC" фильтр отказываеться далее работать, ее убираем, таблицы опять двоятся но фильтр работает! jimport('joomla.html.pagination'); $pagination = new JPagination( $total, $limitstart, $limit ); $sql = "SELECT DISTINCT u.id, u.name, u.username, u.block, DATE_FORMAT(u.registerDate, '%d.%m.%Y') as registerDate, scu.status, scu.status2, scu.dog_send, scu.upload, scu.params, a.city, scu.newor" . "\n FROM #__users as u" . "\n INNER JOIN #__scusers as scu ON(scu.user_id = u.id)" . "\n INNER JOIN #__scaddress as a ON(a.user_id = u.id)" . "\n GROUP BY u.id DESC" . $where . $orderby ; $rows = $this->_getList($sql, $pagination->limitstart, $pagination->limit); $output = array( 'rows' => $rows, 'pagination' => $pagination, 'search' => $search, 'order' => $filter_order, 'order_Dir' => $filter_order_Dir ); внизу кода фильтры! они походу дела небудут работаьт да с . "\n GROUP BY u.id DESC" ?? или есть возможность их прекрепить?
1. $where должен идти перед GROUP BY 2. Если не получиться после 1. сделай следующее: Надо переделать фильтр, заменив слово WHERE на HAVING в переменной $where ( переменная $where в данном случае, уже должна будет идти после GROUP BY). Если не найдёшь где это слово формируется замени $where на str_replace('WHERE', 'HAVING', $where)
сделал проще)) создал новую ячейку в scusers, с параметром city, вытащил их из массива ячейки params, и залил туда) там всего то 200 городов)) теперь и не двоит и фильтры работают)