CHAR(36) BINARY
намекает, что там будет текстовое представление UUID. Да и имя поля намекает на то же самое. Но если так - то какой смысл в BINARY? чтобы потом надо было думать, что делать с регистрозависимостью? И вообще - почему бы не упаковать UUID в BINARY(16)? да, потребуется преобразование при вводе-выводе, зато ускорится обработка.ON UPDATE NO ACTION
- это что, `billInc` (`uuid`)
неуникальное, что ли? А сколько вообще записей в `billInc`
?-- рабочая таблица
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
project_id INT,
project_number INT
);
-- опорная таблица для генерации номеров в разрезе проектов
CREATE TABLE generate_project_number (
project_id INT,
project_number INT AUTO_INCREMENT,
PRIMARY KEY (project_id, project_number)
) ENGINE = MyISAM;
-- триггер-генератор
CREATE TRIGGER generate_project_number
BEFORE INSERT ON orders
FOR EACH ROW
BEGIN
-- вставить хапись в опорную таблицу для генерации номера
INSERT INTO generate_project_number (project_id) VALUES (NEW.project_id);
-- вставить сгенерированный номер в рабочую таблицу
SET NEW.project_number = LAST_INSERT_ID();
-- почистить опорную таблицу от лишних записей
DELETE FROM generate_project_number
WHERE project_id = NEW.project_id
AND project_number < NEW.project_number;
END
В чем состоит разница между "WHERE" и "AND" в LEFT JOIN?
Или можно как-то в PDO подключаться не сразу к бд
USE new_default_database_name
сеть начала проседать при нагрузках. D-link бывает перегружен, пакеты тупят.
Адрес подсети и адрес роутера от которого идет эта сеть - это одно и тоже?
Адрес сети - это вообще IPадрес или это просто номер?
Под что уходят адреса 192.168.1.0 и 192.168.1.255 и 192.168.1.256 при маске 255.255.255.0
SELECT *
FROM `table1`
JOIN `table2` ON `title`=`sometitle`
WHERE NOT EXISTS ( SELECT NULL
FROM table3
WHERE table1.id = table3.id )
ORDER BY `date`
SELECT *
FROM `table1`
JOIN `table2` ON `title`=`sometitle`
LEFT JOIN table3 ON table1.id = table3.id
WHERE table3.id IS NULL
ORDER BY `date`
SELECT ANY_VALUE(title) AS title_list,
SUM(count_model) AS count_model,
COUNT(*) AS total,
ANY_VALUE(created_at) AS `date`
FROM mymodels
GROUP BY name_list
ORDER BY name_list;
Но тут, внезапно возникает необходимость в отслеживании у пользователя текущего заказа, т.к. заказ и корзина в условиях текущего приложения по сути одно и то же, только заказ может быть активным, либо нет.
Абстрагировавшись от всей теории разработки БД, выбираю самое простое решение ..
INSERT INTO test (a,b,c,d)
SELECT a,b,c,d
FROM JSON_TABLE(
CONCAT('[', REPLACE(REPLACE(@list, '(', '['), ')', ']'), ']'),
'$[*]' COLUMNS (
a INT PATH '$[0]',
b INT PATH '$[1]',
c INT PATH '$[2]',
d INT PATH '$[3]'
)
) jsontable
WITH
cte1 AS (
SELECT jsonb_build_object('name', users.name,
'value', comments.value,
'rating', comments.rating) single_user,
comments.order_id,
'comment' || ROW_NUMBER() OVER (PARTITION BY comments.order_id ORDER BY comments.id) num
FROM users
JOIN comments ON users.id = comments.user_id
),
cte2 AS (
SELECT jsonb_build_object('order_id', order_id) ||
jsonb_object_agg(num, single_user) single_order
FROM cte1
GROUP BY order_id
)
SELECT jsonb_agg(single_order) final_data
FROM cte2;