Bonjour,
J'ai le problème suivant :
Dans une tabel j'ai un champ avec des données séparées par des points ex:
12.66.32.43
Dans un autre table j'ai l'information de correspondance de ces données ex :
12 correspond à rejet AAA , 66 correspond à Rejet XXX, 32 correspond à Rejet
ZZZ etc...
Je voudrais faire une requête sur ma première table qui me remplace les
valeurs séparées par des points par les valeurs de correspondance sur une
seule ligne en concaténant les infos par exemple.
Au final je voudrais avoir dans un champ Rejet AAA, Rejet XXX, Rejet ZZZ
S vous pouviez m'aidez je sèche sur comment faire ?
Merci de votre aide.
Loïc
Bonjour,
J'ai le problème suivant :
Dans une tabel j'ai un champ avec des données séparées par des points ex:
12.66.32.43
Dans un autre table j'ai l'information de correspondance de ces données ex :
12 correspond à rejet AAA , 66 correspond à Rejet XXX, 32 correspond à Rejet
ZZZ etc...
Je voudrais faire une requête sur ma première table qui me remplace les
valeurs séparées par des points par les valeurs de correspondance sur une
seule ligne en concaténant les infos par exemple.
Au final je voudrais avoir dans un champ Rejet AAA, Rejet XXX, Rejet ZZZ
S vous pouviez m'aidez je sèche sur comment faire ?
Merci de votre aide.
Loïc
Bonjour,
J'ai le problème suivant :
Dans une tabel j'ai un champ avec des données séparées par des points ex:
12.66.32.43
Dans un autre table j'ai l'information de correspondance de ces données ex :
12 correspond à rejet AAA , 66 correspond à Rejet XXX, 32 correspond à Rejet
ZZZ etc...
Je voudrais faire une requête sur ma première table qui me remplace les
valeurs séparées par des points par les valeurs de correspondance sur une
seule ligne en concaténant les infos par exemple.
Au final je voudrais avoir dans un champ Rejet AAA, Rejet XXX, Rejet ZZZ
S vous pouviez m'aidez je sèche sur comment faire ?
Merci de votre aide.
Loïc
Fino a écrit :Bonjour,
J'ai le problème suivant :
Dans une tabel j'ai un champ avec des données séparées par des points ex:
12.66.32.43
Dans un autre table j'ai l'information de correspondance de ces données
ex : 12 correspond à rejet AAA , 66 correspond à Rejet XXX, 32 correspond
à Rejet ZZZ etc...
Il est vraiement idiot d'avoir une base de données relationnelle et de ne
pas se conformer au modèle en mettant dans une seule et même colonne
plusieurs information. Ce genre de non modélisation qui ne respecte même
pas la première forme normal, conduit à des performances lamentables et
des requêtes imbitables.
Je voudrais faire une requête sur ma première table qui me remplace les
valeurs séparées par des points par les valeurs de correspondance sur une
seule ligne en concaténant les infos par exemple.
Cepandant et afin de vous tirer d'embarras voila un exemple de solution
(épouvantable en terme de perf) à votre problème :
CREATE TABLE T_STUPIDE_SPD (SPD_ID INT, SPD_IMBECILE VARCHAR(32))
INSERT INTO T_STUPIDE_SPD VALUES (1, '12.66.32.43')
INSERT INTO T_STUPIDE_SPD VALUES (2, '44.11.32.57')
CREATE TABLE T_CORRESPONDANCE_CPD (CPD_ID INT, CPD_LIBELLE VARCHAR(32))
INSERT INTO T_CORRESPONDANCE_CPD VALUES (12, 'Impayé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (66, 'Chèque sans provision')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (32, 'Délais dépassé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (43, 'Incomplet')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (44, 'Trop payé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (11, 'Relance')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (57, 'Avant échéance')
SELECT *
FROM T_STUPIDE_SPD S
INNER JOIN T_CORRESPONDANCE_CPD C
ON '.' + S.SPD_IMBECILE + '.'
LIKE '%' + CAST(C.CPD_ID AS VARCHAR(32)) + '%'
SPD_ID SPD_IMBECILE CPD_ID CPD_LIBELLE
----------- -------------------------------- ----------- ------------
1 12.66.32.43 12 Impayé
1 12.66.32.43 66 Chèque sans
provision
1 12.66.32.43 32 Délais dépassé
1 12.66.32.43 43 Incomplet
2 44.11.32.57 32 Délais dépassé
2 44.11.32.57 44 Trop payé
2 44.11.32.57 11 Relance
2 44.11.32.57 57 Avant échéance
Bien entendu il ne peut y avoir aucune solution performante à votre
demande tant que le modèle de données ne sera pas revu !
Au final je voudrais avoir dans un champ Rejet AAA, Rejet XXX, Rejet ZZZ
S vous pouviez m'aidez je sèche sur comment faire ?
Merci de votre aide.
Loïc
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Fino a écrit :
Bonjour,
J'ai le problème suivant :
Dans une tabel j'ai un champ avec des données séparées par des points ex:
12.66.32.43
Dans un autre table j'ai l'information de correspondance de ces données
ex : 12 correspond à rejet AAA , 66 correspond à Rejet XXX, 32 correspond
à Rejet ZZZ etc...
Il est vraiement idiot d'avoir une base de données relationnelle et de ne
pas se conformer au modèle en mettant dans une seule et même colonne
plusieurs information. Ce genre de non modélisation qui ne respecte même
pas la première forme normal, conduit à des performances lamentables et
des requêtes imbitables.
Je voudrais faire une requête sur ma première table qui me remplace les
valeurs séparées par des points par les valeurs de correspondance sur une
seule ligne en concaténant les infos par exemple.
Cepandant et afin de vous tirer d'embarras voila un exemple de solution
(épouvantable en terme de perf) à votre problème :
CREATE TABLE T_STUPIDE_SPD (SPD_ID INT, SPD_IMBECILE VARCHAR(32))
INSERT INTO T_STUPIDE_SPD VALUES (1, '12.66.32.43')
INSERT INTO T_STUPIDE_SPD VALUES (2, '44.11.32.57')
CREATE TABLE T_CORRESPONDANCE_CPD (CPD_ID INT, CPD_LIBELLE VARCHAR(32))
INSERT INTO T_CORRESPONDANCE_CPD VALUES (12, 'Impayé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (66, 'Chèque sans provision')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (32, 'Délais dépassé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (43, 'Incomplet')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (44, 'Trop payé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (11, 'Relance')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (57, 'Avant échéance')
SELECT *
FROM T_STUPIDE_SPD S
INNER JOIN T_CORRESPONDANCE_CPD C
ON '.' + S.SPD_IMBECILE + '.'
LIKE '%' + CAST(C.CPD_ID AS VARCHAR(32)) + '%'
SPD_ID SPD_IMBECILE CPD_ID CPD_LIBELLE
----------- -------------------------------- ----------- ------------
1 12.66.32.43 12 Impayé
1 12.66.32.43 66 Chèque sans
provision
1 12.66.32.43 32 Délais dépassé
1 12.66.32.43 43 Incomplet
2 44.11.32.57 32 Délais dépassé
2 44.11.32.57 44 Trop payé
2 44.11.32.57 11 Relance
2 44.11.32.57 57 Avant échéance
Bien entendu il ne peut y avoir aucune solution performante à votre
demande tant que le modèle de données ne sera pas revu !
Au final je voudrais avoir dans un champ Rejet AAA, Rejet XXX, Rejet ZZZ
S vous pouviez m'aidez je sèche sur comment faire ?
Merci de votre aide.
Loïc
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Fino a écrit :Bonjour,
J'ai le problème suivant :
Dans une tabel j'ai un champ avec des données séparées par des points ex:
12.66.32.43
Dans un autre table j'ai l'information de correspondance de ces données
ex : 12 correspond à rejet AAA , 66 correspond à Rejet XXX, 32 correspond
à Rejet ZZZ etc...
Il est vraiement idiot d'avoir une base de données relationnelle et de ne
pas se conformer au modèle en mettant dans une seule et même colonne
plusieurs information. Ce genre de non modélisation qui ne respecte même
pas la première forme normal, conduit à des performances lamentables et
des requêtes imbitables.
Je voudrais faire une requête sur ma première table qui me remplace les
valeurs séparées par des points par les valeurs de correspondance sur une
seule ligne en concaténant les infos par exemple.
Cepandant et afin de vous tirer d'embarras voila un exemple de solution
(épouvantable en terme de perf) à votre problème :
CREATE TABLE T_STUPIDE_SPD (SPD_ID INT, SPD_IMBECILE VARCHAR(32))
INSERT INTO T_STUPIDE_SPD VALUES (1, '12.66.32.43')
INSERT INTO T_STUPIDE_SPD VALUES (2, '44.11.32.57')
CREATE TABLE T_CORRESPONDANCE_CPD (CPD_ID INT, CPD_LIBELLE VARCHAR(32))
INSERT INTO T_CORRESPONDANCE_CPD VALUES (12, 'Impayé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (66, 'Chèque sans provision')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (32, 'Délais dépassé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (43, 'Incomplet')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (44, 'Trop payé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (11, 'Relance')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (57, 'Avant échéance')
SELECT *
FROM T_STUPIDE_SPD S
INNER JOIN T_CORRESPONDANCE_CPD C
ON '.' + S.SPD_IMBECILE + '.'
LIKE '%' + CAST(C.CPD_ID AS VARCHAR(32)) + '%'
SPD_ID SPD_IMBECILE CPD_ID CPD_LIBELLE
----------- -------------------------------- ----------- ------------
1 12.66.32.43 12 Impayé
1 12.66.32.43 66 Chèque sans
provision
1 12.66.32.43 32 Délais dépassé
1 12.66.32.43 43 Incomplet
2 44.11.32.57 32 Délais dépassé
2 44.11.32.57 44 Trop payé
2 44.11.32.57 11 Relance
2 44.11.32.57 57 Avant échéance
Bien entendu il ne peut y avoir aucune solution performante à votre
demande tant que le modèle de données ne sera pas revu !
Au final je voudrais avoir dans un champ Rejet AAA, Rejet XXX, Rejet ZZZ
S vous pouviez m'aidez je sèche sur comment faire ?
Merci de votre aide.
Loïc
A +
--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
Fino a écrit :Bonjour,
J'ai le problème suivant :
Dans une tabel j'ai un champ avec des données séparées par des points
ex: 12.66.32.43
Dans un autre table j'ai l'information de correspondance de ces
données ex : 12 correspond à rejet AAA , 66 correspond à Rejet XXX, 32
correspond à Rejet ZZZ etc...
Il est vraiement idiot d'avoir une base de données relationnelle et de
ne pas se conformer au modèle en mettant dans une seule et même colonne
plusieurs information. Ce genre de non modélisation qui ne respecte même
pas la première forme normal, conduit à des performances lamentables et
des requêtes imbitables.
Je voudrais faire une requête sur ma première table qui me remplace
les valeurs séparées par des points par les valeurs de correspondance
sur une seule ligne en concaténant les infos par exemple.
Cepandant et afin de vous tirer d'embarras voila un exemple de solution
(épouvantable en terme de perf) à votre problème :
CREATE TABLE T_STUPIDE_SPD (SPD_ID INT, SPD_IMBECILE VARCHAR(32))
INSERT INTO T_STUPIDE_SPD VALUES (1, '12.66.32.43')
INSERT INTO T_STUPIDE_SPD VALUES (2, '44.11.32.57')
CREATE TABLE T_CORRESPONDANCE_CPD (CPD_ID INT, CPD_LIBELLE VARCHAR(32))
INSERT INTO T_CORRESPONDANCE_CPD VALUES (12, 'Impayé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (66, 'Chèque sans provision')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (32, 'Délais dépassé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (43, 'Incomplet')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (44, 'Trop payé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (11, 'Relance')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (57, 'Avant échéance')
SELECT *
FROM T_STUPIDE_SPD S
INNER JOIN T_CORRESPONDANCE_CPD C
ON '.' + S.SPD_IMBECILE + '.'
LIKE '%' + CAST(C.CPD_ID AS VARCHAR(32)) + '%'
SPD_ID SPD_IMBECILE CPD_ID CPD_LIBELLE
----------- -------------------------------- ----------- ------------
1 12.66.32.43 12 Impayé
1 12.66.32.43 66 Chèque sans
provision
1 12.66.32.43 32 Délais dépassé
1 12.66.32.43 43 Incomplet
2 44.11.32.57 32 Délais dépassé
2 44.11.32.57 44 Trop payé
2 44.11.32.57 11 Relance
2 44.11.32.57 57 Avant échéance
Bien entendu il ne peut y avoir aucune solution performante à votre
demande tant que le modèle de données ne sera pas revu !
Au final je voudrais avoir dans un champ Rejet AAA, Rejet XXX, Rejet ZZZ
S vous pouviez m'aidez je sèche sur comment faire ?
Merci de votre aide.
Loïc
A +
Fino a écrit :
Bonjour,
J'ai le problème suivant :
Dans une tabel j'ai un champ avec des données séparées par des points
ex: 12.66.32.43
Dans un autre table j'ai l'information de correspondance de ces
données ex : 12 correspond à rejet AAA , 66 correspond à Rejet XXX, 32
correspond à Rejet ZZZ etc...
Il est vraiement idiot d'avoir une base de données relationnelle et de
ne pas se conformer au modèle en mettant dans une seule et même colonne
plusieurs information. Ce genre de non modélisation qui ne respecte même
pas la première forme normal, conduit à des performances lamentables et
des requêtes imbitables.
Je voudrais faire une requête sur ma première table qui me remplace
les valeurs séparées par des points par les valeurs de correspondance
sur une seule ligne en concaténant les infos par exemple.
Cepandant et afin de vous tirer d'embarras voila un exemple de solution
(épouvantable en terme de perf) à votre problème :
CREATE TABLE T_STUPIDE_SPD (SPD_ID INT, SPD_IMBECILE VARCHAR(32))
INSERT INTO T_STUPIDE_SPD VALUES (1, '12.66.32.43')
INSERT INTO T_STUPIDE_SPD VALUES (2, '44.11.32.57')
CREATE TABLE T_CORRESPONDANCE_CPD (CPD_ID INT, CPD_LIBELLE VARCHAR(32))
INSERT INTO T_CORRESPONDANCE_CPD VALUES (12, 'Impayé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (66, 'Chèque sans provision')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (32, 'Délais dépassé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (43, 'Incomplet')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (44, 'Trop payé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (11, 'Relance')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (57, 'Avant échéance')
SELECT *
FROM T_STUPIDE_SPD S
INNER JOIN T_CORRESPONDANCE_CPD C
ON '.' + S.SPD_IMBECILE + '.'
LIKE '%' + CAST(C.CPD_ID AS VARCHAR(32)) + '%'
SPD_ID SPD_IMBECILE CPD_ID CPD_LIBELLE
----------- -------------------------------- ----------- ------------
1 12.66.32.43 12 Impayé
1 12.66.32.43 66 Chèque sans
provision
1 12.66.32.43 32 Délais dépassé
1 12.66.32.43 43 Incomplet
2 44.11.32.57 32 Délais dépassé
2 44.11.32.57 44 Trop payé
2 44.11.32.57 11 Relance
2 44.11.32.57 57 Avant échéance
Bien entendu il ne peut y avoir aucune solution performante à votre
demande tant que le modèle de données ne sera pas revu !
Au final je voudrais avoir dans un champ Rejet AAA, Rejet XXX, Rejet ZZZ
S vous pouviez m'aidez je sèche sur comment faire ?
Merci de votre aide.
Loïc
A +
Fino a écrit :Bonjour,
J'ai le problème suivant :
Dans une tabel j'ai un champ avec des données séparées par des points
ex: 12.66.32.43
Dans un autre table j'ai l'information de correspondance de ces
données ex : 12 correspond à rejet AAA , 66 correspond à Rejet XXX, 32
correspond à Rejet ZZZ etc...
Il est vraiement idiot d'avoir une base de données relationnelle et de
ne pas se conformer au modèle en mettant dans une seule et même colonne
plusieurs information. Ce genre de non modélisation qui ne respecte même
pas la première forme normal, conduit à des performances lamentables et
des requêtes imbitables.
Je voudrais faire une requête sur ma première table qui me remplace
les valeurs séparées par des points par les valeurs de correspondance
sur une seule ligne en concaténant les infos par exemple.
Cepandant et afin de vous tirer d'embarras voila un exemple de solution
(épouvantable en terme de perf) à votre problème :
CREATE TABLE T_STUPIDE_SPD (SPD_ID INT, SPD_IMBECILE VARCHAR(32))
INSERT INTO T_STUPIDE_SPD VALUES (1, '12.66.32.43')
INSERT INTO T_STUPIDE_SPD VALUES (2, '44.11.32.57')
CREATE TABLE T_CORRESPONDANCE_CPD (CPD_ID INT, CPD_LIBELLE VARCHAR(32))
INSERT INTO T_CORRESPONDANCE_CPD VALUES (12, 'Impayé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (66, 'Chèque sans provision')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (32, 'Délais dépassé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (43, 'Incomplet')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (44, 'Trop payé')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (11, 'Relance')
INSERT INTO T_CORRESPONDANCE_CPD VALUES (57, 'Avant échéance')
SELECT *
FROM T_STUPIDE_SPD S
INNER JOIN T_CORRESPONDANCE_CPD C
ON '.' + S.SPD_IMBECILE + '.'
LIKE '%' + CAST(C.CPD_ID AS VARCHAR(32)) + '%'
SPD_ID SPD_IMBECILE CPD_ID CPD_LIBELLE
----------- -------------------------------- ----------- ------------
1 12.66.32.43 12 Impayé
1 12.66.32.43 66 Chèque sans
provision
1 12.66.32.43 32 Délais dépassé
1 12.66.32.43 43 Incomplet
2 44.11.32.57 32 Délais dépassé
2 44.11.32.57 44 Trop payé
2 44.11.32.57 11 Relance
2 44.11.32.57 57 Avant échéance
Bien entendu il ne peut y avoir aucune solution performante à votre
demande tant que le modèle de données ne sera pas revu !
Au final je voudrais avoir dans un champ Rejet AAA, Rejet XXX, Rejet ZZZ
S vous pouviez m'aidez je sèche sur comment faire ?
Merci de votre aide.
Loïc
A +