Javascript.RU

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

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)  
Старый 21.02.2019, 14:28
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

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

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

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

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

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

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

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

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

upd.

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

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




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

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

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

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

Сообщение от 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)  
Старый 21.02.2019, 22:22
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

Сообщение от 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)  
Старый 22.02.2019, 12:05
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

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

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, 22.02.2019 в 12:35.
Ответить с цитированием
  #48 (permalink)  
Старый 22.02.2019, 18:46
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

> 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 ухожу разрабатывать. Она молодая, дырявая и переполненная говна(убираем говнопакетчиков в пользу нативного функционала), но может в будущем станет лучше.
Ответить с цитированием
  #49 (permalink)  
Старый 23.02.2019, 12:09
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,706

Сообщение от xShift
Вот тут AS зачем?
Чтобы в результате выборки, значение счетчика было в поле "total", очевидно же.

Сообщение от xShift
AS сделали гондоны.
Сообщение от xShift
бы систему не ковыряли всякие некомпетентные разработчики типа хабров.
У вас синдром Д'артаньяна.

Сообщение от xShift
Если что появится через годик.
Ждать не буду, ибо этим испражнением, как я уже писал, кроме вас пользоваться никто не сможет.

Сообщение от xShift
Она молодая, дырявая и переполненная говна
Стоит ли тогда еще и ваше говно туда добавлять?

Выпиливаюсь из топика, ибо начнется срач.
Ответить с цитированием
  #50 (permalink)  
Старый 24.02.2019, 12:15
Аватар для xShift
Профессор
Отправить личное сообщение для xShift Посмотреть профиль Найти все сообщения от xShift
 
Регистрация: 22.11.2016
Сообщений: 212

Nexus оказался пидарасом. Пригласили в разработчики, включили в прослушку, через 5 часов начал ныть что его не разрабатывают. Это ни чего что меня чтобы разрабатывать объясняют 5 лет примерно и подбирают таких людей с которыми мне нормально. Потом глупый нексус решил на подставить ментами - это сегодня выяснилось. Хотел скрысить прослушку и включиться к ментам чтобы жаловаться. Поржали.

Вот так и делай людям добро. Маленькие людишки всегда страдали повышенным эго, но не до такой же степени сукой быть.

Вон из разработчиков.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ищу cms для готового сайта panikajo Серверные языки и технологии 1 24.04.2018 15:30
CinemaPress CMS - движок кино-сайта, скрипт онлайн кинотеатра на NodeJS KurtRassel Ваши сайты и скрипты 7 14.09.2016 21: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