Files
geo/cron/init_batiments.sql
Pierre 0687900564 fix: Récupérer l'opération active depuis la table operations
- 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
2026-01-26 16:57:08 +01:00

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;
*/