Précédent   Forum du club des développeurs et IT Pro > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 19/12/2012, 17h12   #1
MisterGinko
Invité de passage
 
Homme
Consultant ERP
Inscription : septembre 2012
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant ERP
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : septembre 2012
Messages : 14
Points : 1
Points : 1
Par défaut Problème d'insertion & concaténation

Bonjour à toutes et à tous,

N'ayant pas trouvé de sujet correspondant, je sollicite donc la formidable communauté que nous sommes

Je dois récupérer deux champs dans deux table différentes et concaténer ensuite ces informations dans un troisieme champs.

Je sais récupérer une information d'une table pour l'insérer dans une autre, mais je suis confronté à deux problèmes.
Pour info :

Je suis en SQL Server.

Ma première donnée est un numéro (de facture) sur 4 digit.

La deuxième donnée est ce qu'on appelle la souche; en fait un trigramme qui identifie la société qui émet la facture.

J'ai une table avec toutes mes factures ( de 0001 à 1500 environ) et une table avec les souches (celle qui m'intéresse est ST1)

J'ai créé une table (Z_FULLINVOICEID) dans laquelle je récupère mon numéro de facture (DO_Piece), ma souche (S_INTITULE), et j'ai créé un troisième champ où j'espérai concaténer les deux information (INVOICE_ID).

Le premier problème que je rencontre est que je n'arrive pas à récupérer uniquement la souche qui m'intéresse et l'insérer en face de chaque numéro de facture dans ma table Z_FULLINVOICEID (

DO_Piece|S_Intitule
654 | ST1
655 | ST1
etc

SQL me renvoie systématiquement toutes les souches dans l'ordre de la table d'où elles viennent ...

DO_Piece | S_Intitule
654 |ST1
655 |ST2
656 |ST3

J'ai réussi a contourner le problème mais c'est pas propre puisque j'insère en "dur" l'info de la souche alors qu'elle est présente dans le système ...

Le deuxième souci, c'est que je n'arrive pas a construire ma requête pour concaténer les deux info dans le 3ème champs que j'ai créé.
j'ai bien essayé ça, mais visiblement ma syntaxe SQL n'est pas bonne ...
Code :
1
2
3
4
5
6
7
 
USE [ST1]
GO
 
INSERT INTO Z_FULLINVOICEID (INVOICE_ID)
SELECT Z_FULLINVOICEID.S_INTITULE +''+ Z_FULLINVOICEID.DO_Piece
WHERE dbo.Z_FULLINVOICEID.DO_Piece IS NOT NULL
Voilà, j'espère que c'est assez clair, et que vous aurez quelques pistes à me donner (je demande pas une solution toute faite, mais plutot comprendre où je me plante)

Merci à vous tous !
MisterGinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 18h16   #2
al1_24
Modérateur
 
Avatar de al1_24
 
Homme Alain
Ingénieur d'études décisionnel
Inscription : mai 2002
Messages : 4 877
Détails du profil
Informations personnelles :
Nom : Homme Alain
Âge : 52
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études décisionnel
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 4 877
Points : 11 777
Points : 11 777
L'opérateur de la concaténation en SQL est ||, pas +.
__________________
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton et pensez aux balises
[code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
al1_24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2012, 18h20   #3
MisterGinko
Invité de passage
 
Homme
Consultant ERP
Inscription : septembre 2012
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant ERP
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : septembre 2012
Messages : 14
Points : 1
Points : 1
Bonsoir,

en SQL Server c'est explicitement '+'

en fait j'ai aussi essayé || et cela ne fonctionne pas non plus...
MisterGinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 08h33   #4
Kropernic
Membre Expert
 
Avatar de Kropernic
 
Homme
Analyste / Programmeur / DBA
Inscription : juillet 2006
Messages : 1 935
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Analyste / Programmeur / DBA
Secteur : Distribution

Informations forums :
Inscription : juillet 2006
Messages : 1 935
Points : 1 470
Points : 1 470
Peut-on avoir le DDL des deux tables concernées ?
(cfr charte de postage)
__________________
Kropernic (anciennement Griftou).
Kropernic est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 09h31   #5
MisterGinko
Invité de passage
 
Homme
Consultant ERP
Inscription : septembre 2012
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant ERP
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : septembre 2012
Messages : 14
Points : 1
Points : 1
Oups j'avais raté ce point.

Dès que notre serveur de test est online, je récupère cela et je vous le post.

Merci !
MisterGinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 15h33   #6
MisterGinko
Invité de passage
 
Homme
Consultant ERP
Inscription : septembre 2012
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant ERP
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : septembre 2012
Messages : 14
Points : 1
Points : 1
Par défaut DDL

J'ai récupérer les 3 tables. Pour info, il s'agit des base de données d'un système SAGE L100.

La table avec mes factures :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 
CREATE TABLE [dbo].[F_DOCENTETE](
	[DO_Domaine] [smallint] NULL,
	[DO_Type] [smallint] NULL,
	[DO_Piece] [varchar](9) COLLATE French_CI_AS NULL,
	[cbDO_Piece]  AS (CONVERT([varbinary](10),space((10)-(len([DO_Piece])+(1)))+[DO_Piece],0)),
	[DO_Date] [smalldatetime] NULL,
	[DO_Ref] [varchar](17) COLLATE French_CI_AS NULL,
	[DO_Tiers] [varchar](17) COLLATE French_CI_AS NULL,
	[cbDO_Tiers]  AS (CONVERT([varbinary](18),isnull([DO_Tiers],''),0)),
	[DO_Period] [smallint] NULL,
	[DO_Devise] [smallint] NULL,
	[DO_Cours] [numeric](24, 6) NULL,
	[DE_No] [int] NULL,
	[cbDE_No] [int] NULL,
	[LI_No] [int] NULL,
	[cbLI_No] [int] NULL,
	[CT_NumPayeur] [varchar](17) COLLATE French_CI_AS NULL,
	[cbCT_NumPayeur]  AS (CONVERT([varbinary](18),isnull([CT_NumPayeur],''),0)),
	[DO_Expedit] [smallint] NULL,
	[DO_NbFacture] [smallint] NULL,
	[DO_BLFact] [smallint] NULL,
	[DO_TxEscompte] [numeric](24, 6) NULL,
	[DO_Reliquat] [smallint] NULL,
	[DO_Imprim] [smallint] NULL,
	[CA_Num] [varchar](13) COLLATE French_CI_AS NULL,
	[cbCA_Num]  AS (CONVERT([varbinary](14),isnull([CA_Num],''),0)),
	[DO_Coord01] [varchar](25) COLLATE French_CI_AS NULL,
	[DO_Coord02] [varchar](25) COLLATE French_CI_AS NULL,
	[DO_Coord03] [varchar](25) COLLATE French_CI_AS NULL,
	[DO_Coord04] [varchar](25) COLLATE French_CI_AS NULL,
	[DO_Souche] [smallint] NULL,
	[DO_DateLivr] [smalldatetime] NULL,
	[DO_Condition] [smallint] NULL,
	[DO_Tarif] [smallint] NULL,
	[DO_Colisage] [smallint] NULL,
	[DO_TypeColis] [smallint] NULL,
	[DO_Transaction] [smallint] NULL,
	[DO_Langue] [smallint] NULL,
	[DO_Ecart] [numeric](24, 6) NULL,
	[DO_Regime] [smallint] NULL,
	[N_CatCompta] [smallint] NULL,
	[DO_Ventile] [smallint] NULL,
	[AB_No] [int] NULL,
	[DO_DebutAbo] [smalldatetime] NULL,
	[DO_FinAbo] [smalldatetime] NULL,
	[DO_DebutPeriod] [smalldatetime] NULL,
	[DO_FinPeriod] [smalldatetime] NULL,
	[CG_Num] [varchar](13) COLLATE French_CI_AS NULL,
	[cbCG_Num]  AS (CONVERT([varbinary](14),isnull([CG_Num],''),0)),
	[DO_Statut] [smallint] NULL,
	[DO_Heure] [char](9) COLLATE French_CI_AS NULL,
	[CA_No] [int] NULL,
	[cbCA_No] [int] NULL,
	[DO_Transfere] [smallint] NULL,
	[DO_Cloture] [smallint] NULL,
	[DO_NoWeb] [varchar](17) COLLATE French_CI_AS NULL,
	[DO_Attente] [smallint] NULL,
	[DO_Provenance] [smallint] NULL,
	[CA_NumIFRS] [varchar](13) COLLATE French_CI_AS NULL,
	[MR_No] [int] NULL,
	[DO_TypeFrais] [smallint] NULL,
	[DO_ValFrais] [numeric](24, 6) NULL,
	[DO_TypeLigneFrais] [smallint] NULL,
	[DO_TypeFranco] [smallint] NULL,
	[DO_ValFranco] [numeric](24, 6) NULL,
	[DO_TypeLigneFranco] [smallint] NULL,
	[DO_Taxe1] [numeric](24, 6) NULL,
	[DO_TypeTaux1] [smallint] NULL,
	[DO_TypeTaxe1] [smallint] NULL,
	[DO_Taxe2] [numeric](24, 6) NULL,
	[DO_TypeTaux2] [smallint] NULL,
	[DO_TypeTaxe2] [smallint] NULL,
	[DO_Taxe3] [numeric](24, 6) NULL,
	[DO_TypeTaux3] [smallint] NULL,
	[DO_TypeTaxe3] [smallint] NULL,
	[DO_MajCpta] [smallint] NULL,
	[DO_Motif] [varchar](69) COLLATE French_CI_AS NULL,
	[CT_NumCentrale] [varchar](17) COLLATE French_CI_AS NULL,
	[cbCT_NumCentrale]  AS (CONVERT([varbinary](18),isnull([CT_NumCentrale],''),0)),
	[DO_Contact] [varchar](35) COLLATE French_CI_AS NULL,
	[cbProt] [smallint] NULL DEFAULT ((0)),
	[cbMarq] [int] IDENTITY(1,1) NOT NULL,
	[cbCreateur] [char](4) COLLATE French_CI_AS NULL DEFAULT ('CSQL'),
	[cbModification] [smalldatetime] NULL DEFAULT (getdate()),
	[cbReplication] [int] NULL DEFAULT ((0)),
	[cbFlag] [smallint] NULL DEFAULT ((0)),
	[Date_Signature] [smalldatetime] NULL,
	[Commentaire] [varchar](69) COLLATE French_CI_AS NULL,
	[CO_No] [int] NULL,
	[cbCO_No] [int] NULL,
	[CO_NoCaissier] [int] NULL,
	[cbCO_NoCaissier] [int] NULL,
	[DO_FactureElec] [smallint] NULL,
	[DO_TypeTransac] [smallint] NULL,
	[Date_debut] [smalldatetime] NULL,
	[Date_fin] [smalldatetime] NULL,
	[Ref_BDC] [varchar](69) COLLATE French_CI_AS NULL
la table avec les souches de document

Code :
1
2
3
4
5
6
7
8
 
CREATE TABLE [dbo].[P_SOUCHEVENTE](
	[S_Intitule] [varchar](35) COLLATE French_CI_AS NULL,
	[S_Valide] [smallint] NULL,
	[JO_Num] [varchar](7) COLLATE French_CI_AS NULL,
	[JO_NumSituation] [varchar](7) COLLATE French_CI_AS NULL,
	[cbIndice] [smallint] NULL,
	[cbMarq] [int] IDENTITY(1,1) NOT NULL
et la table que j'ai créé pour récupérer une référence de facture entière.

Code :
1
2
3
4
5
6
 
 
CREATE TABLE [dbo].[Z_FULL_INVOICE_ID](
	[DO_Piece] [char](10) COLLATE French_CI_AS NULL,
	[S_Intitule] [nchar](10) COLLATE French_CI_AS NULL,
	[Invoice_ID] [nchar](10) COLLATE French_CI_AS NULL
Merci d'avance !
MisterGinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 16h23   #7
Kropernic
Membre Expert
 
Avatar de Kropernic
 
Homme
Analyste / Programmeur / DBA
Inscription : juillet 2006
Messages : 1 935
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Analyste / Programmeur / DBA
Secteur : Distribution

Informations forums :
Inscription : juillet 2006
Messages : 1 935
Points : 1 470
Points : 1 470
Plusieurs remarques :

1 : OMG la table à rallonge ! (mais bon, je crois qu'on est tous passé par là un jour ou l'autre). Un article intéressant

2 : Dans la table que tu as créés, pourquoi utiliser le type nchar ? Tu attends des caractères autres que latins ? (genre idéogrammes)

3 : Toujours dans cette table, même si toutes les colonnes étaient en char, tu veux concaténer deux colonnes char(10) dans une autre colonne char(10).
10+10 = ...... 10 ? Cela fait fait 20 chez moi. Même si en théorie, pour des raisons x ou y la somme des longueurs des 2 colonnes ne devrait jamais dépasser 10, en pratique, vu la DB, rien ne l'interdit. Donc gaffe à ça aussi.

4 : J'avais pas spécialement fait gaffe à la première lecture mais en relisant la requête que tu montres dans ton premier message, est-ce normal de faire un insert plutot qu'un update ? Au vu de ta requête, si je comprends bien, tu as déjà inséré les 2 infos de bases et tu veux gérer l'info devant se trouver dans la 3e colonnes.
J'aurais plutôt fait quelque chose dans ce genre-là :
Code :
1
2
3
4
UPDATE Z_FULLINVOICEID 
SET INVOICE_ID = S_INTITULE + ''+ DO_Piece
WHERE DO_Piece IS NOT NULL
Si par contre la table est vierge, je ferais ceci :
Code :
1
2
3
4
5
6
7
8
9
10
 
INSERT INTO Z_FULLINVOICEID (DO_PIECE, S_INTITULE, INVOICE_ID)
SELECT
        F.DO_PIECE,
        P.S_INTITULE,
        P.S_INTITULE + ' ' + F.DO_PIECE
FROM
        F_DOCENTETE F
            INNER JOIN P_SOUCHEVENTE P
                ON --la condition de jointure qui va bien
5 : Plutôt que de concaténer "manuellement" lors de l'insertion ou lors d'un update, pourquoi ne pas utilisé une colonne calculée (persistante si cela ne varie pas) ?

Je vais m'arrêter là.

Si je vois autre chose, j'ajouterai
__________________
Kropernic (anciennement Griftou).
Kropernic est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 16h39   #8
MisterGinko
Invité de passage
 
Homme
Consultant ERP
Inscription : septembre 2012
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant ERP
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : septembre 2012
Messages : 14
Points : 1
Points : 1
Merci beaucoup pour les conseils

Pour la longueur de la table F_DOCENTETE, c'est malheureusement du SAGE out of the box, donc je ne peux pas y toucher.

Par contre, en continuant à me triturer les méninges sur ce problème, j'ai changer quelques points, que je suis heureux de retrouver dans tes commentaires.

1) la nature de mes champs était mal définie. J'ai choisi varchar qui a l'air plus adapté.
2) en effet un UPDATE est plus adapté qu'un insert ... faut que je fasse attention à ma logique BDD des fois ...

3) j'ai testé ma requete avec un UPDATE, et la bonne syntaxe de concatenation ( || ne fonctionne pas du tout en MS-SQL, évidemment) et bien sur, cela fonctionne.

4) pour répondre à ta question, je dirais que je fais avec mes connaissance, je ne sais pas (pas encore) une colonne ou un champs calculé ...

Pour résumé, le schema auquel j'avais pensé était celui la :

1) créer la table Z_FULL_INVOICE_ID
2) récupérer le champs DO_Piece de la table F_DOCENTETE
3) Récupérer la valeur de la souche S_Intitule de la table P_SOUCHEVENTE (plutot que de coller en dur sa valeur dans la table)
4) concaténer l'ensemble dans le champs INVOICE_ID.

Vu que j'ai une quinzaine de sociétés a traiter, j'aurai voulu pouvoir scripter cela dans le bon sens, et dérouler l'ensemble sur toutes mes bases.

Au final, il ne me reste qu'un point non résolu, et un détail que je devrais pouvoir résoudre tout seul.
Le point, c'est récupérer la bonne souche depuis P_SOUCHEVENTE (bien qu'en y réfléchissant en même temps que j'écris, je dois pouvoir faire un Select avec un IS NOT NULL quelque part et ça devrait fonctionner) - le détail, c'est qu'il me concatène aussi les espaces du champs S_Intitule, mais je crois avoir trouvé une parade.

Vivement 2013 que je fasse enfin ma formation SQL ...
MisterGinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 16h54   #9
Kropernic
Membre Expert
 
Avatar de Kropernic
 
Homme
Analyste / Programmeur / DBA
Inscription : juillet 2006
Messages : 1 935
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Analyste / Programmeur / DBA
Secteur : Distribution

Informations forums :
Inscription : juillet 2006
Messages : 1 935
Points : 1 470
Points : 1 470
Pour "supprimer" des espaces en début ou fin d'une donnée littérale, il y a les fonctions LTRIM et RTRIM qui retirent respectivement les espaces à gauche et à droite de la chaîne de caractère (L pour Left et R pour Right, ça aide à retenir).

Pour récupérer la bonne souche, cela devrait, je pense, se faire automatiquement avec la bonne condition de jointure (dans le 2e bout de code que j'ai posté, c'est la partie en gris qu'il faut remplacer).

J'avoue ne pas avoir pris le temps de chercher dans les deux tables sources que tu donnes lesquelles de leurs colonnes servaient de clefs étrangères de l'une vers l'autre.
__________________
Kropernic (anciennement Griftou).
Kropernic est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 16h57   #10
MisterGinko
Invité de passage
 
Homme
Consultant ERP
Inscription : septembre 2012
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant ERP
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : septembre 2012
Messages : 14
Points : 1
Points : 1
Le problème c'est que je ne vois pas comment faire ma jointure entre ma table F_DOCENTETE et P_SOUCHEVENTE, elles n'ont aucuns aucun champs en commun ... mais je vais bien trouver une solution


Merci énormément, en tout cas, je sais maintenant que je suis sur la bonne voie!!

Bonnes fêtes de fin d'années à tous !
MisterGinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 17h08   #11
Kropernic
Membre Expert
 
Avatar de Kropernic
 
Homme
Analyste / Programmeur / DBA
Inscription : juillet 2006
Messages : 1 935
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 30
Localisation : Belgique

Informations professionnelles :
Activité : Analyste / Programmeur / DBA
Secteur : Distribution

Informations forums :
Inscription : juillet 2006
Messages : 1 935
Points : 1 470
Points : 1 470
Citation:
Envoyé par MisterGinko Voir le message
Le problème c'est que je ne vois pas comment faire ma jointure entre ma table F_DOCENTETE et P_SOUCHEVENTE, elles n'ont aucuns aucun champs en commun ...
C'est ce que j'ai constaté comme problème également entre temps.

Typiquement, si on prend l'exemple des clients et de leur facture, on aura, en simplifiant à outrance, 2 tables.

Une table T_CLIENT_CLI avec la colonne CLI_ID qui est un entier auto-incrémenté (+ d'autres colonnes pour les infos sur le clients) et une table T_FACTURE_FAC avec la colonne FAC_ID qui est un entier auto-incrémenté (+ d'autres colonnes pour les infos sur la facture) et une colonne CLI_ID pour stocker l'id du client à qui "appartient" la ligne.

Maintenant, en pratique, rien ne m'empêche si je deviens fou de nommer la colonne CLI_ID de la table T_FACTURE_FAC totalement autrement. Le problème, c'est qui si quelqu'un doit passer après, il va avoir du mal à trouver facilement les jointures à mettre en oeuvre.

N.B. : Ce n'est pas tout à fait vrai car même avec des noms tarabiscotés, il y a normalement une contrainte de type FOREIGN KEY à définir qui pourra lui permettre de retrouver facilement les noms des colonnes. Dans Management Studio, en faisant un clic droit sur la table et en choisissant Script Table as > CREATE To > New Query Editor Window (désolé, je l'ai en anglais), on retrouve ces contraintes vers la fin du script.
__________________
Kropernic (anciennement Griftou).
Kropernic est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 17h42   #12
MisterGinko
Invité de passage
 
Homme
Consultant ERP
Inscription : septembre 2012
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant ERP
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : septembre 2012
Messages : 14
Points : 1
Points : 1
J'ai vu ça aussi (je l'ai aussi en anglais) je vais regarder de plus prêt.

Merci encore !
MisterGinko est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 21h21.


 
 
 
 
Partenaires

Hébergement Web