Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый Вчера, 14:07
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 209

DBX v.1.1.3 :: реализована поддержка INNER JOIN. ABQ простой:

Цитата:
$cFields = ['field_id', 'field_node_id', 'field_user_id', 'field_user_name', 'field_content', 'field_time', 'field_published'];
$nFields = ['field_id', 'field_title', 'field_content', 'field_description', 'field_user', 'field_time', 'field_route', 'field_category', 'field_published'];

$nFields['field_id']['criterion_field'] = 'field_id';
$nFields['field_id']['linked_field'] = 'field_node_id';

$ncFields = [
$cFields,
$nFields
];

unset( $dbx::$result['result'] ); // clean previous result


$dbx::query('j', ['revolver__nodes', 'revolver__comments'], $ncFields);
выдаст запрос:

Цитата:
SELECT `revolver__nodes`.*, `revolver__comments`.* FROM `revolver__nodes` INNER JOIN `revolver__comments` ON(`revolver__nodes`.field_id=`revolver__comments` .field_node_id);
JOIN может быть хоть пятерным. В скором будущем после создания кэша для j и xs запросов будет скомпилировано ядро RevolveR CMS, чтобы систему не ковыряли всякие некомпетентные разработчики типа хабров.
Ответить с цитированием
  #42 (permalink)  
Старый Вчера, 14:28
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,753

Сообщение от xShift
ABQ простой
Для вас.

Зачем вам в коде список полей (переменные $cFields, $nFields), если на выхлопе запрос, который вытянет из базы все поля таблиц?
Алиасы полям проставить можно?

Очищение предыдущей выборки из базы перед созданием нового запроса выглядит феерично
Что произойдет, если этого не сделать?

upd.
Сообщение от xShift
будет скомпилировано ядро RevolveR CMS, чтобы систему не ковыряли всякие некомпетентные разработчики
Создайте приватный репозиторий и проблема будет решена без необходимости компиляции php.

Последний раз редактировалось Nexus, Вчера в 14:42.
Ответить с цитированием
  #43 (permalink)  
Старый Вчера, 19:43
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 209

Сообщение от Nexus Посмотреть сообщение
Для вас.

Зачем вам в коде список полей (переменные $cFields, $nFields), если на выхлопе запрос, который вытянет из базы все поля таблиц?
Алиасы полям проставить можно?

Очищение предыдущей выборки из базы перед созданием нового запроса выглядит феерично
Что произойдет, если этого не сделать?

upd.

Создайте приватный репозиторий и проблема будет решена без необходимости компиляции php.

Поля формируют ON, если вы не заметили.




Очистка запроса нужна только для того, чтобы результаты предыдущего запроса не схлопывались. Можно выполнить несколько разных select и они соединятся(не то что для удобства - просто так накожено). В RevolveR CMS это делается автоматически если используется хелпер GetData. Он автоматически проверяет перед выполнением запроса к DBX, что переменая $dbx::$result['result]' пуста(очищает ее). За замечание спасибо, возможно я это исправлю каким либо образом.

> Алиасы полям проставить можно?

Я над этим пока не работал. API будет по гибче - я еще LIMIT добавлю и ORDER BY.

В будущем, кстати, я портирую DBX на NODE JS.
Ответить с цитированием
  #44 (permalink)  
Старый Вчера, 19:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,753

Сообщение от xShift
Поля формируют ON, если вы не заметили.
Я про первые 2 строчки писал.
Цитата:
$cFields = ['field_id', 'field_node_id', 'field_user_id', 'field_user_name', 'field_content', 'field_time', 'field_published'];
$nFields = ['field_id', 'field_title', 'field_content', 'field_description', 'field_user', 'field_time', 'field_route', 'field_category', 'field_published'];
Ответить с цитированием
  #45 (permalink)  
Старый Вчера, 22:22
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 209

Сообщение от Nexus Посмотреть сообщение
Я про первые 2 строчки писал.

Так вот просто для наглядности. Они в полном виде выглядят вот так:

$STRUCT_NODES = [
	'field_id' => [
		'type'   => 'num', // int
		'auto'   => true,  // auto increment
		'length' => 255,
		'value'  => 0
	],
	'field_title' => [
		'type'   => 'text', // varchar
		'length' => 50,
		'fill'   => true
	],
	'field_content' => [
		'type'   => 'text', // varchar
		'length' => 10000,
		'fill'   => true
	],
	'field_description' => [
		'type'   => 'text', // varchar
		'length' => 10000,
		'fill'   => true
	],
	'field_user' => [
		'type'   => 'text',
		'length' => 50,
		'fill'	 => true
	],
	'field_time' => [
		'type'   => 'text',
		'length' => 50,
		'fill'	 => true
	],
	'field_route' => [
		'type'   => 'text',
		'length' => 100,
		'fill'	 => true
	],
	'field_category' => [
		'type'   => 'num',
		'length' => 100,
		'fill'	 => true
	],
	'field_published' => [
		'type'   => 'num',
		'length' => 1,
		'fill'   => false
	]
];

$STRUCT_COMMENTS = [
	'field_id' => [
		'type'   => 'num', // int
		'auto'   => true,  // auto increment
		'length' => 255,
		'value'  => 0
	],
	'field_node_id' => [
		'type'   => 'num',
		'length' => 50,
		'fill'	 => true
	],
	'field_user_id' => [
		'type'   => 'num',
		'length' => 50,
		'fill'	 => true
	],
	'field_user_name' => [
		'type'   => 'text',
		'length' => 100,
		'fill'	 => true
	],
	'field_content' => [
		'type'   => 'text', // varchar
		'length' => 10000,
		'fill'   => true
	],
	'field_time' => [
		'type'   => 'text',
		'length' => 100,
		'fill'	 => true
	],
	'field_published' => [
		'type' 	 => 'num',
		'length' => 1,
		'fill'	 => false
	]
];


Это дефайнится один раз и потом я просто эти же структуры и использую. Правильно, достаточно просто поля field_id[criterion_fileld&&linked_field], но я использую JOIN не однажды и мне для копипасты удобнее прописать сразу все fields, чтобы в структуры постоянно и в базу не лезти.
Ответить с цитированием
  #46 (permalink)  
Старый Сегодня, 12:05
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 209

Nexus, напиши пример SQL запроса с алиасами. Я просто не знаю, что тебе хочется.
Ответить с цитированием
  #47 (permalink)  
Старый Сегодня, 12:31
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 2,753

SELECT COUNT(*) as total FROM table_name WHERE condition=1

SELECT t.*,r.some_field as related_some_field
FROM table_name as t
LEFT JOIN related_table as r ON (r.table_id=t.id)
WHERE t.condition=1

Последний раз редактировалось Nexus, Сегодня в 12:35.
Ответить с цитированием
  #48 (permalink)  
Старый Сегодня, 18:46
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 209

> SELECT COUNT(*) as total FROM table_name WHERE condition=1

Вот тут AS зачем?

>

SELECT t.*,r.some_field as related_some_field
FROM table_name as t
LEFT JOIN related_table as r ON (r.table_id=t.id)
WHERE t.condition=1

Вот здесь тоже зачем? Ты этих задротов начитался? То же самое я могу сделать с префиксами на DBX и добавить тебе возможность WHERE. AS сделали гондоны. Тебя, кстати, в AMD взяли

p.s.: сейчас разрабатываем расширение для PHP под BD MySQL на ABQ. Если что появится через годик. Потом я на NODE.JS ухожу разрабатывать. Она молодая, дырявая и переполненная говна(убираем говнопакетчиков в пользу нативного функционала), но может в будущем станет лучше.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу cms для готового сайта panikajo Серверные языки и технологии 1 24.04.2018 16:30
CinemaPress CMS - движок кино-сайта, скрипт онлайн кинотеатра на NodeJS KurtRassel Ваши сайты и скрипты 7 14.09.2016 22:31
Template CMS 2.0 Awilum Ваши сайты и скрипты 40 14.05.2011 17:30
Новая система управления сайтом Scripto CMS deepslam Ваши сайты и скрипты 38 31.01.2011 14:55
Template CMS - маленькая и быстрая CMS Awilum Ваши сайты и скрипты 3 22.09.2010 23:19