- Corrige l'erreur SQL 'Unknown column fk_operation in users' - L'opération active est récupérée depuis operations.chk_active = 1 - Jointure avec users pour filtrer par entité de l'admin créateur - Query: SELECT o.id FROM operations o INNER JOIN users u ON u.fk_entite = o.fk_entite WHERE u.id = ? AND o.chk_active = 1
74 lines
2.0 KiB
SQL
Executable File
74 lines
2.0 KiB
SQL
Executable File
-- Script d'initialisation de la base batiments
|
|
-- À exécuter avant le premier import
|
|
|
|
-- Création de la base de données
|
|
CREATE DATABASE IF NOT EXISTS batiments
|
|
DEFAULT CHARACTER SET utf8mb4
|
|
COLLATE utf8mb4_general_ci;
|
|
|
|
USE batiments;
|
|
|
|
-- Table d'historique des imports
|
|
CREATE TABLE IF NOT EXISTS _histo (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
date_import DATETIME NOT NULL,
|
|
dept VARCHAR(5) NOT NULL,
|
|
nb_batiments INT DEFAULT 0,
|
|
INDEX idx_date_import (date_import),
|
|
INDEX idx_dept (dept)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
|
|
|
-- Vue consolidée de tous les départements (à créer après les imports)
|
|
-- Cette vue sera créée dynamiquement après l'import de tous les départements
|
|
|
|
-- Exemple de requête pour créer la vue après imports :
|
|
/*
|
|
CREATE OR REPLACE VIEW v_batiments_france AS
|
|
SELECT * FROM bat01
|
|
UNION ALL SELECT * FROM bat02
|
|
UNION ALL SELECT * FROM bat03
|
|
-- ... etc pour tous les départements
|
|
;
|
|
*/
|
|
|
|
-- Index supplémentaires recommandés après import complet
|
|
-- À exécuter sur chaque table batXX après import :
|
|
/*
|
|
ALTER TABLE bat01 ADD INDEX idx_nb_log (nb_log);
|
|
ALTER TABLE bat01 ADD INDEX idx_nb_niv (nb_niv_max);
|
|
ALTER TABLE bat01 ADD INDEX idx_coords (latitude, longitude);
|
|
*/
|
|
|
|
-- Permissions pour l'utilisateur osm_maj_user
|
|
GRANT ALL PRIVILEGES ON batiments.* TO 'osm_maj_user'@'localhost';
|
|
GRANT ALL PRIVILEGES ON batiments.* TO 'osm_maj_user'@'%';
|
|
FLUSH PRIVILEGES;
|
|
|
|
-- Statistiques globales
|
|
CREATE OR REPLACE VIEW v_stats_imports AS
|
|
SELECT
|
|
dept,
|
|
MAX(date_import) as derniere_import,
|
|
SUM(nb_batiments) as total_batiments
|
|
FROM _histo
|
|
GROUP BY dept
|
|
ORDER BY dept;
|
|
|
|
-- Exemple de jointure avec la base adresses
|
|
/*
|
|
-- Depuis la base batiments, joindre avec la base adresses :
|
|
SELECT
|
|
b.batiment_groupe_id,
|
|
b.nb_log,
|
|
b.nb_niv_max,
|
|
b.nb_pdl_res_princ as nb_compteurs,
|
|
a.numero,
|
|
a.rue,
|
|
a.cp,
|
|
a.ville
|
|
FROM bat01 b
|
|
JOIN adresses.cp01 a ON b.cle_interop_adr = a.id
|
|
WHERE b.nb_log > 0
|
|
AND b.nb_pdl_res_princ > 0;
|
|
*/
|