IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Problème d'insertion & concaténation


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2012
    Messages
    16
    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 : 16
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    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
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2012
    Messages
    16
    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 : 16
    Par défaut
    Bonsoir,

    en SQL Server c'est explicitement '+'

    en fait j'ai aussi essayé || et cela ne fonctionne pas non plus...

  4. #4
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    Peut-on avoir le DDL des deux tables concernées ?
    (cfr charte de postage)

  5. #5
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2012
    Messages
    16
    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 : 16
    Par défaut
    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 !

  6. #6
    Membre averti
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Septembre 2012
    Messages
    16
    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 : 16
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2004, 14h32
  2. Probléme d'insertion par défault
    Par xavier62 dans le forum SQL
    Réponses: 7
    Dernier message: 28/11/2003, 13h03
  3. [Interbase 7] Problème d'insertion de données
    Par Tuscelan dans le forum InterBase
    Réponses: 12
    Dernier message: 19/11/2003, 22h58
  4. STL : std::set problème avec insert ...
    Par Big K. dans le forum MFC
    Réponses: 13
    Dernier message: 08/11/2003, 01h02
  5. Problème d'insertion avec MySQL
    Par Sonny dans le forum ASP
    Réponses: 13
    Dernier message: 28/08/2003, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo