З Різдвом Христовим!

Archangel Michael

Нехай це особливе свято принесе у ваше життя світло, спокій і надію. Бажаю, щоб у серці завжди жила віра, у домі панували затишок і любов, а кожен день починався з добрих думок і теплих новин.

Нехай різдвяна зірка оберігає вас і ваших близьких, дарує силу, єдність і віру в краще майбутнє.

Божого захисту і благословіння!

Тримаймося!

Слава Україні!

Оператор AND

Що робить AND Оператор AND повертає TRUE лише тоді, коли всі умови істинні одночасно. Якщо хоча б одна умова не виконується — результат буде FALSE.
Синтаксис
SELECT *
FROM users
WHERE age >= 18 AND is_active = 1;

Запит поверне лише користувачів, які:    
• досягли 18 років    
• і мають активний обліковий запис
Приклад із кількома умовами
SELECT *
FROM products
WHERE price > 500 AND quantity > 0 AND category = ‘electronics’;
Тут будуть показані лише ті товари, які:    
• коштують більше 500    
• є в наявності    
• належать до категорії “electronics”

Приклад

-- Створюємо базу даних
CREATE DATABASE and_practice_db;
USE and_practice_db;

-- Створимо таблицю products
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    category VARCHAR(50),
    price DECIMAL(10,2),
    quantity INT,
    is_active BOOLEAN
);

-- Заповнюємо таблицю даними
INSERT INTO products (name, category, price, quantity, is_active) VALUES
('Laptop Lenovo', 'electronics', 25000, 5, 1),
('iPhone 13', 'electronics', 35000, 0, 1),
('Office Chair', 'furniture', 4500, 10, 1),
('Old Monitor', 'electronics', 3000, 2, 0),
('Desk Lamp', 'furniture', 1200, 15, 1);

--  Активні електронні товари
SELECT *
FROM products
WHERE category = 'electronics' AND is_active = 1;

-- Товари дорожчі за 5000 і в наявності
SELECT *
FROM products
WHERE price > 5000 AND quantity > 0;

-- Активні меблі, яких більше ніж 5 штук
SELECT name, price, quantity
FROM products
WHERE category = 'furniture'
AND quantity > 5
AND is_active = 1;

-- активні товари з діапозоном цін від 1000 до 30000
SELECT *
FROM products
WHERE price BETWEEN 1000 AND 30000
AND is_active = 1;

Для додаткової візуалізації є відео.

CROSS JOIN

CROSS JOIN — це тип з’єднання, який створює декартовий добуток двох таблиць. Це означає, що:
Кожен рядок першої таблиці поєднується з кожним рядком другої таблиці, незалежно від будь-яких умов.
Формально:
|A| = кількість рядків у таблиці A 
|B| = кількість рядків у таблиці B 
A CROSS JOIN B → |A| × |B|
Синтаксис SELECT *
FROM table1
CROSS JOIN table2;
CROSS JOIN Без умови – Декартовий добуток
SELECT *
FROM products
CROSS JOIN colors;

CROSS JOIN з умовою – Технічно перетворюється на INNER JOIN
SELECT *
FROM products
CROSS JOIN colors
WHERE products.id = colors.product_id;

Навіщо потрібен CROSS JOIN

Генерація комбінацій
Наприклад, створити всі комбінації:    
• продукт × колір    
• колір × розмір    
• місто × дата    
• користувач × роль
Генерація тестових даних
Ви можете побудувати 1000×1000=1,000,000 рядків для тестів
Підготовка матриць для аналітики
Наприклад:    
• усі користувачі × усі продукти    
• усі магазини × усі місяці    
• усі показники × всі періоди
Створення календарів, часових сіток
Для створення:    
• графіків роботи,    
• всіх днів року,    
• timetable-комбінацій (день × годинний слот)

Чому слід бути обережним

• Може випадково створити мільйони рядків.    
• Може працювати повільно.    
• Часто плутають з INNER JOIN.
Будьте уважні. Завжди перевіряйте обсяг таблиць перед використанням.

Приклад

-- Створення бази даних
CREATE DATABASE cross_join_practice;
USE cross_join_practice;

-- Створення таблиць
-- Ми створимо три таблиці: products — товари, colors — кольори, sizes — розміри
CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50)
);

CREATE TABLE colors (
    id INT AUTO_INCREMENT PRIMARY KEY,
    color VARCHAR(50)
);

CREATE TABLE sizes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    size VARCHAR(10)
);

-- Наповнення таблиць даними
-- products
INSERT INTO products (name) VALUES
('Phone'),
('Laptop'),
('Tablet');
-- colors
INSERT INTO colors (color) VALUES
('Black'),
('Silver'),
('Blue');

-- sizes
INSERT INTO sizes (size) VALUES
('Small'),
('Medium'),
('Large');

-- товар × колір
SELECT p.name AS product, c.color
FROM products p
CROSS JOIN colors c;
-- Результат (3 × 3 = 9 рядків)

-- товар × колір × розмір
SELECT p.name AS product, c.color, s.size
FROM products p
CROSS JOIN colors c
CROSS JOIN sizes s;
-- Результат (3 × 3 × 3 = 27 рядків)

Для додаткової візуалізації є відео.