Bonjour,
Je sollicite votre aide afin de m'aider à résoudre un problème: Je rencontre
un problème pour la création d'une vue sur une base de données SQL.
Afin de mieux expliquer le problème, j'ai fait des images illustratives, je
vous invite à télécharger le fichier
sur:
http://selvmatt.no-ip.com/public/vue.doc
Voici le texte sans les images afin de vous donner une idée du problème, si
vous ne voulez pas télécharger le fichier:
Mon logiciel permet d'envoyer des emails et de rattacher des fichier de tous
types à des adresses, des contacts, des projets (de construction ou autre),
des devis, des offres, etc. Toutes les possibilités sont envisagées. Un
fichier peut être associé à tout et à rien. Il peut parfaitement être
associé à un projet, une offre et une adresse, et rien d'autre, tout comme
il peut être associé à un devis, plusieurs adresses et plusieurs contacts et
rien d'autre.
Ces emails et fichiers sont ensuite sauvés et un enregistrement est crée
dans la base de données dans une table FICHIERS (qui sert entre autre à
d'autres
utilisations) et des liens sont crées avec le projet, adresses et contacts
éventuels.
Donc à ce stade, le fichier existe en tant qu'entité dans la base de
données. C'est ce sur quoi je centre mon intérêt à présent, le fichier réel
n'étant pas important. Selon moi, la structure de la base de données est
bien modélisée, d'autant que le logiciel tourne depuis pas mal de temps et
qu'aucun problème n'a été signalé jusqu'à présent. Un table centrale
FICHIERS, et des tables associatives autour, afin de s'y « brancher »
Le problème n'est pas dans la structure de la base pour ces fichiers, mais
plutôt dans la création d'une seule et unique vue, aussi complexe soit-elle,
sur laquelle travailler afin de retrouver les fichiers par critères.
Concrètement, il y a une table FICHIERS, une table PROJETS (si un mail
concerne un projet) une table ADRESSES (qui représente des sociétés), une
table CONTACTS (qui représente des personnes, qui peuvent être liées à une
adresse). Pour chacune de ces tables, il y a une table associative avec la
table FICHIERS afin de faire le lien. Tout ceci fonctionne ainsi :
Lorsqu'un email est créé, j'insère un enregistrement dans la table FICHIERS.
S'il concerne un projet (ou plusieurs), j'insère une association avec la
table PROJETS. Si une adresse de société est dans la liste des destinataires
(ou plusieurs) j'insère une association avec la table ADRESSES. Si un
contact est dans la liste des destinataires (ou plusieurs) j'insère une
association avec la table CONTACTS et une dans la table ADRESSES, si le
contact fait partie de cette adresse (on considère que le mail a aussi été
envoyé à la société, pratique pour la recherche, si le contact
disparaissait).
Ceci étant fait, je peux faire mes requêtes et retrouver tout ce que je
cherche sur mon fichier.
Mon problème est dans le fait que je voudrais faire une vue de TOUS les
fichiers de la base de données (il peut y en avoir 100 000 !) afin de
l'afficher
à l'utilisateur, et que l'utilisateur ait une vue d'ensemble pour chaque
fichier. TOUTES les informations doivent figurer sur cette vue.
En fait cette vue sera reprise dans un formulaire et l'utilisateur aura tous
les fichiers sous les yeux et ensuite il pourra les filtrer par critères.
A noter que pour l'exemple, je ne parle que des liens entre les projets,
adresses et contacts, mais qu'en réalité j'ai beaucoup plus de liens que ça,
avec à chaque fois une table associative.
Le nombre d'associatives et le nombre de fichiers ne me permettent pas de
regrouper les données en code, mais m'oblige à le faire en SQL pour des
raisons de performances.
Exemple pratique :
J'envoie un email pour le projet « TestProjet » à deux Adresses et deux
contacts. :
Adresse1, Adresse2, Contact1 (Attaché à Adresse 3), Contact2 (Attaché à
Adresse 4),
Voilà ce que la vue devrait afficher :
(IMAGE)
Si le même fichier avait été aussi rattaché au projet « TestProjet_Bis »,
voilà ce que la vue devrait afficher :
(IMAGE)
Si il y a un autre fichier « Mon Email 2 » rattaché à rien du tout, mais qui
existe, voilà ce que la vue devrait afficher :
(IMAGE)
Et ainsi de suite.
A noter que dans l'exemple, je décris le fonctionnement des fichiers autour
de projet, adresses et contacts, mais dans la réalité, les fichier sont
aussi rattachés (associatives) à d'autres éléments : offre, prospections,
commandes, articles, sous-projets, catégories, devis etc. Donc la vue est
bien plus complexe.
Structure de la base de données des exemples (très réduite et simplifiée) :
(IMAGE)
Voilà...
Je vous remercie de votre aide, je suis vraiement perdu, SQL n'étant pas
vraiement le domaine dans lequel je suis le plus à l'aise!
Bonjour,
Je sollicite votre aide afin de m'aider à résoudre un problème: Je rencontre
un problème pour la création d'une vue sur une base de données SQL.
Afin de mieux expliquer le problème, j'ai fait des images illustratives, je
vous invite à télécharger le fichier
sur:
http://selvmatt.no-ip.com/public/vue.doc
Voici le texte sans les images afin de vous donner une idée du problème, si
vous ne voulez pas télécharger le fichier:
Mon logiciel permet d'envoyer des emails et de rattacher des fichier de tous
types à des adresses, des contacts, des projets (de construction ou autre),
des devis, des offres, etc. Toutes les possibilités sont envisagées. Un
fichier peut être associé à tout et à rien. Il peut parfaitement être
associé à un projet, une offre et une adresse, et rien d'autre, tout comme
il peut être associé à un devis, plusieurs adresses et plusieurs contacts et
rien d'autre.
Ces emails et fichiers sont ensuite sauvés et un enregistrement est crée
dans la base de données dans une table FICHIERS (qui sert entre autre à
d'autres
utilisations) et des liens sont crées avec le projet, adresses et contacts
éventuels.
Donc à ce stade, le fichier existe en tant qu'entité dans la base de
données. C'est ce sur quoi je centre mon intérêt à présent, le fichier réel
n'étant pas important. Selon moi, la structure de la base de données est
bien modélisée, d'autant que le logiciel tourne depuis pas mal de temps et
qu'aucun problème n'a été signalé jusqu'à présent. Un table centrale
FICHIERS, et des tables associatives autour, afin de s'y « brancher »
Le problème n'est pas dans la structure de la base pour ces fichiers, mais
plutôt dans la création d'une seule et unique vue, aussi complexe soit-elle,
sur laquelle travailler afin de retrouver les fichiers par critères.
Concrètement, il y a une table FICHIERS, une table PROJETS (si un mail
concerne un projet) une table ADRESSES (qui représente des sociétés), une
table CONTACTS (qui représente des personnes, qui peuvent être liées à une
adresse). Pour chacune de ces tables, il y a une table associative avec la
table FICHIERS afin de faire le lien. Tout ceci fonctionne ainsi :
Lorsqu'un email est créé, j'insère un enregistrement dans la table FICHIERS.
S'il concerne un projet (ou plusieurs), j'insère une association avec la
table PROJETS. Si une adresse de société est dans la liste des destinataires
(ou plusieurs) j'insère une association avec la table ADRESSES. Si un
contact est dans la liste des destinataires (ou plusieurs) j'insère une
association avec la table CONTACTS et une dans la table ADRESSES, si le
contact fait partie de cette adresse (on considère que le mail a aussi été
envoyé à la société, pratique pour la recherche, si le contact
disparaissait).
Ceci étant fait, je peux faire mes requêtes et retrouver tout ce que je
cherche sur mon fichier.
Mon problème est dans le fait que je voudrais faire une vue de TOUS les
fichiers de la base de données (il peut y en avoir 100 000 !) afin de
l'afficher
à l'utilisateur, et que l'utilisateur ait une vue d'ensemble pour chaque
fichier. TOUTES les informations doivent figurer sur cette vue.
En fait cette vue sera reprise dans un formulaire et l'utilisateur aura tous
les fichiers sous les yeux et ensuite il pourra les filtrer par critères.
A noter que pour l'exemple, je ne parle que des liens entre les projets,
adresses et contacts, mais qu'en réalité j'ai beaucoup plus de liens que ça,
avec à chaque fois une table associative.
Le nombre d'associatives et le nombre de fichiers ne me permettent pas de
regrouper les données en code, mais m'oblige à le faire en SQL pour des
raisons de performances.
Exemple pratique :
J'envoie un email pour le projet « TestProjet » à deux Adresses et deux
contacts. :
Adresse1, Adresse2, Contact1 (Attaché à Adresse 3), Contact2 (Attaché à
Adresse 4),
Voilà ce que la vue devrait afficher :
(IMAGE)
Si le même fichier avait été aussi rattaché au projet « TestProjet_Bis »,
voilà ce que la vue devrait afficher :
(IMAGE)
Si il y a un autre fichier « Mon Email 2 » rattaché à rien du tout, mais qui
existe, voilà ce que la vue devrait afficher :
(IMAGE)
Et ainsi de suite.
A noter que dans l'exemple, je décris le fonctionnement des fichiers autour
de projet, adresses et contacts, mais dans la réalité, les fichier sont
aussi rattachés (associatives) à d'autres éléments : offre, prospections,
commandes, articles, sous-projets, catégories, devis etc. Donc la vue est
bien plus complexe.
Structure de la base de données des exemples (très réduite et simplifiée) :
(IMAGE)
Voilà...
Je vous remercie de votre aide, je suis vraiement perdu, SQL n'étant pas
vraiement le domaine dans lequel je suis le plus à l'aise!
Bonjour,
Je sollicite votre aide afin de m'aider à résoudre un problème: Je rencontre
un problème pour la création d'une vue sur une base de données SQL.
Afin de mieux expliquer le problème, j'ai fait des images illustratives, je
vous invite à télécharger le fichier
sur:
http://selvmatt.no-ip.com/public/vue.doc
Voici le texte sans les images afin de vous donner une idée du problème, si
vous ne voulez pas télécharger le fichier:
Mon logiciel permet d'envoyer des emails et de rattacher des fichier de tous
types à des adresses, des contacts, des projets (de construction ou autre),
des devis, des offres, etc. Toutes les possibilités sont envisagées. Un
fichier peut être associé à tout et à rien. Il peut parfaitement être
associé à un projet, une offre et une adresse, et rien d'autre, tout comme
il peut être associé à un devis, plusieurs adresses et plusieurs contacts et
rien d'autre.
Ces emails et fichiers sont ensuite sauvés et un enregistrement est crée
dans la base de données dans une table FICHIERS (qui sert entre autre à
d'autres
utilisations) et des liens sont crées avec le projet, adresses et contacts
éventuels.
Donc à ce stade, le fichier existe en tant qu'entité dans la base de
données. C'est ce sur quoi je centre mon intérêt à présent, le fichier réel
n'étant pas important. Selon moi, la structure de la base de données est
bien modélisée, d'autant que le logiciel tourne depuis pas mal de temps et
qu'aucun problème n'a été signalé jusqu'à présent. Un table centrale
FICHIERS, et des tables associatives autour, afin de s'y « brancher »
Le problème n'est pas dans la structure de la base pour ces fichiers, mais
plutôt dans la création d'une seule et unique vue, aussi complexe soit-elle,
sur laquelle travailler afin de retrouver les fichiers par critères.
Concrètement, il y a une table FICHIERS, une table PROJETS (si un mail
concerne un projet) une table ADRESSES (qui représente des sociétés), une
table CONTACTS (qui représente des personnes, qui peuvent être liées à une
adresse). Pour chacune de ces tables, il y a une table associative avec la
table FICHIERS afin de faire le lien. Tout ceci fonctionne ainsi :
Lorsqu'un email est créé, j'insère un enregistrement dans la table FICHIERS.
S'il concerne un projet (ou plusieurs), j'insère une association avec la
table PROJETS. Si une adresse de société est dans la liste des destinataires
(ou plusieurs) j'insère une association avec la table ADRESSES. Si un
contact est dans la liste des destinataires (ou plusieurs) j'insère une
association avec la table CONTACTS et une dans la table ADRESSES, si le
contact fait partie de cette adresse (on considère que le mail a aussi été
envoyé à la société, pratique pour la recherche, si le contact
disparaissait).
Ceci étant fait, je peux faire mes requêtes et retrouver tout ce que je
cherche sur mon fichier.
Mon problème est dans le fait que je voudrais faire une vue de TOUS les
fichiers de la base de données (il peut y en avoir 100 000 !) afin de
l'afficher
à l'utilisateur, et que l'utilisateur ait une vue d'ensemble pour chaque
fichier. TOUTES les informations doivent figurer sur cette vue.
En fait cette vue sera reprise dans un formulaire et l'utilisateur aura tous
les fichiers sous les yeux et ensuite il pourra les filtrer par critères.
A noter que pour l'exemple, je ne parle que des liens entre les projets,
adresses et contacts, mais qu'en réalité j'ai beaucoup plus de liens que ça,
avec à chaque fois une table associative.
Le nombre d'associatives et le nombre de fichiers ne me permettent pas de
regrouper les données en code, mais m'oblige à le faire en SQL pour des
raisons de performances.
Exemple pratique :
J'envoie un email pour le projet « TestProjet » à deux Adresses et deux
contacts. :
Adresse1, Adresse2, Contact1 (Attaché à Adresse 3), Contact2 (Attaché à
Adresse 4),
Voilà ce que la vue devrait afficher :
(IMAGE)
Si le même fichier avait été aussi rattaché au projet « TestProjet_Bis »,
voilà ce que la vue devrait afficher :
(IMAGE)
Si il y a un autre fichier « Mon Email 2 » rattaché à rien du tout, mais qui
existe, voilà ce que la vue devrait afficher :
(IMAGE)
Et ainsi de suite.
A noter que dans l'exemple, je décris le fonctionnement des fichiers autour
de projet, adresses et contacts, mais dans la réalité, les fichier sont
aussi rattachés (associatives) à d'autres éléments : offre, prospections,
commandes, articles, sous-projets, catégories, devis etc. Donc la vue est
bien plus complexe.
Structure de la base de données des exemples (très réduite et simplifiée) :
(IMAGE)
Voilà...
Je vous remercie de votre aide, je suis vraiement perdu, SQL n'étant pas
vraiement le domaine dans lequel je suis le plus à l'aise!
postez le DDL de vos tables (CREATE TABLE=) ainsi qu'un jeu de données
d'essais cela nous aidera à vous montrer la requête adéquate.
A +
news.sunrise.ch a écrit :Bonjour,
Je sollicite votre aide afin de m'aider à résoudre un problème: Je
rencontre un problème pour la création d'une vue sur une base de données
SQL.
Afin de mieux expliquer le problème, j'ai fait des images illustratives,
je vous invite à télécharger le fichier
sur:
http://selvmatt.no-ip.com/public/vue.doc
Voici le texte sans les images afin de vous donner une idée du problème,
si
vous ne voulez pas télécharger le fichier:
Mon logiciel permet d'envoyer des emails et de rattacher des fichier de
tous
types à des adresses, des contacts, des projets (de construction ou
autre),
des devis, des offres, etc. Toutes les possibilités sont envisagées. Un
fichier peut être associé à tout et à rien. Il peut parfaitement être
associé à un projet, une offre et une adresse, et rien d'autre, tout
comme
il peut être associé à un devis, plusieurs adresses et plusieurs contacts
et
rien d'autre.
Ces emails et fichiers sont ensuite sauvés et un enregistrement est crée
dans la base de données dans une table FICHIERS (qui sert entre autre à
d'autres
utilisations) et des liens sont crées avec le projet, adresses et
contacts
éventuels.
Donc à ce stade, le fichier existe en tant qu'entité dans la base de
données. C'est ce sur quoi je centre mon intérêt à présent, le fichier
réel
n'étant pas important. Selon moi, la structure de la base de données est
bien modélisée, d'autant que le logiciel tourne depuis pas mal de temps
et
qu'aucun problème n'a été signalé jusqu'à présent. Un table centrale
FICHIERS, et des tables associatives autour, afin de s'y « brancher »
Le problème n'est pas dans la structure de la base pour ces fichiers,
mais
plutôt dans la création d'une seule et unique vue, aussi complexe
soit-elle,
sur laquelle travailler afin de retrouver les fichiers par critères.
Concrètement, il y a une table FICHIERS, une table PROJETS (si un mail
concerne un projet) une table ADRESSES (qui représente des sociétés), une
table CONTACTS (qui représente des personnes, qui peuvent être liées à
une
adresse). Pour chacune de ces tables, il y a une table associative avec
la
table FICHIERS afin de faire le lien. Tout ceci fonctionne ainsi :
Lorsqu'un email est créé, j'insère un enregistrement dans la table
FICHIERS.
S'il concerne un projet (ou plusieurs), j'insère une association avec la
table PROJETS. Si une adresse de société est dans la liste des
destinataires
(ou plusieurs) j'insère une association avec la table ADRESSES. Si un
contact est dans la liste des destinataires (ou plusieurs) j'insère une
association avec la table CONTACTS et une dans la table ADRESSES, si le
contact fait partie de cette adresse (on considère que le mail a aussi
été
envoyé à la société, pratique pour la recherche, si le contact
disparaissait).
Ceci étant fait, je peux faire mes requêtes et retrouver tout ce que je
cherche sur mon fichier.
Mon problème est dans le fait que je voudrais faire une vue de TOUS les
fichiers de la base de données (il peut y en avoir 100 000 !) afin de
l'afficher
à l'utilisateur, et que l'utilisateur ait une vue d'ensemble pour chaque
fichier. TOUTES les informations doivent figurer sur cette vue.
En fait cette vue sera reprise dans un formulaire et l'utilisateur aura
tous
les fichiers sous les yeux et ensuite il pourra les filtrer par critères.
A noter que pour l'exemple, je ne parle que des liens entre les projets,
adresses et contacts, mais qu'en réalité j'ai beaucoup plus de liens que
ça,
avec à chaque fois une table associative.
Le nombre d'associatives et le nombre de fichiers ne me permettent pas de
regrouper les données en code, mais m'oblige à le faire en SQL pour des
raisons de performances.
Exemple pratique :
J'envoie un email pour le projet « TestProjet » à deux Adresses et deux
contacts. :
Adresse1, Adresse2, Contact1 (Attaché à Adresse 3), Contact2 (Attaché à
Adresse 4),
Voilà ce que la vue devrait afficher :
(IMAGE)
Si le même fichier avait été aussi rattaché au projet « TestProjet_Bis »,
voilà ce que la vue devrait afficher :
(IMAGE)
Si il y a un autre fichier « Mon Email 2 » rattaché à rien du tout, mais
qui
existe, voilà ce que la vue devrait afficher :
(IMAGE)
Et ainsi de suite.
A noter que dans l'exemple, je décris le fonctionnement des fichiers
autour
de projet, adresses et contacts, mais dans la réalité, les fichier sont
aussi rattachés (associatives) à d'autres éléments : offre, prospections,
commandes, articles, sous-projets, catégories, devis etc. Donc la vue est
bien plus complexe.
Structure de la base de données des exemples (très réduite et simplifiée)
:
(IMAGE)
Voilà...
Je vous remercie de votre aide, je suis vraiement perdu, SQL n'étant pas
vraiement le domaine dans lequel je suis le plus à l'aise!
--
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.datasapiens.com ***********************
postez le DDL de vos tables (CREATE TABLE=) ainsi qu'un jeu de données
d'essais cela nous aidera à vous montrer la requête adéquate.
A +
news.sunrise.ch a écrit :
Bonjour,
Je sollicite votre aide afin de m'aider à résoudre un problème: Je
rencontre un problème pour la création d'une vue sur une base de données
SQL.
Afin de mieux expliquer le problème, j'ai fait des images illustratives,
je vous invite à télécharger le fichier
sur:
http://selvmatt.no-ip.com/public/vue.doc
Voici le texte sans les images afin de vous donner une idée du problème,
si
vous ne voulez pas télécharger le fichier:
Mon logiciel permet d'envoyer des emails et de rattacher des fichier de
tous
types à des adresses, des contacts, des projets (de construction ou
autre),
des devis, des offres, etc. Toutes les possibilités sont envisagées. Un
fichier peut être associé à tout et à rien. Il peut parfaitement être
associé à un projet, une offre et une adresse, et rien d'autre, tout
comme
il peut être associé à un devis, plusieurs adresses et plusieurs contacts
et
rien d'autre.
Ces emails et fichiers sont ensuite sauvés et un enregistrement est crée
dans la base de données dans une table FICHIERS (qui sert entre autre à
d'autres
utilisations) et des liens sont crées avec le projet, adresses et
contacts
éventuels.
Donc à ce stade, le fichier existe en tant qu'entité dans la base de
données. C'est ce sur quoi je centre mon intérêt à présent, le fichier
réel
n'étant pas important. Selon moi, la structure de la base de données est
bien modélisée, d'autant que le logiciel tourne depuis pas mal de temps
et
qu'aucun problème n'a été signalé jusqu'à présent. Un table centrale
FICHIERS, et des tables associatives autour, afin de s'y « brancher »
Le problème n'est pas dans la structure de la base pour ces fichiers,
mais
plutôt dans la création d'une seule et unique vue, aussi complexe
soit-elle,
sur laquelle travailler afin de retrouver les fichiers par critères.
Concrètement, il y a une table FICHIERS, une table PROJETS (si un mail
concerne un projet) une table ADRESSES (qui représente des sociétés), une
table CONTACTS (qui représente des personnes, qui peuvent être liées à
une
adresse). Pour chacune de ces tables, il y a une table associative avec
la
table FICHIERS afin de faire le lien. Tout ceci fonctionne ainsi :
Lorsqu'un email est créé, j'insère un enregistrement dans la table
FICHIERS.
S'il concerne un projet (ou plusieurs), j'insère une association avec la
table PROJETS. Si une adresse de société est dans la liste des
destinataires
(ou plusieurs) j'insère une association avec la table ADRESSES. Si un
contact est dans la liste des destinataires (ou plusieurs) j'insère une
association avec la table CONTACTS et une dans la table ADRESSES, si le
contact fait partie de cette adresse (on considère que le mail a aussi
été
envoyé à la société, pratique pour la recherche, si le contact
disparaissait).
Ceci étant fait, je peux faire mes requêtes et retrouver tout ce que je
cherche sur mon fichier.
Mon problème est dans le fait que je voudrais faire une vue de TOUS les
fichiers de la base de données (il peut y en avoir 100 000 !) afin de
l'afficher
à l'utilisateur, et que l'utilisateur ait une vue d'ensemble pour chaque
fichier. TOUTES les informations doivent figurer sur cette vue.
En fait cette vue sera reprise dans un formulaire et l'utilisateur aura
tous
les fichiers sous les yeux et ensuite il pourra les filtrer par critères.
A noter que pour l'exemple, je ne parle que des liens entre les projets,
adresses et contacts, mais qu'en réalité j'ai beaucoup plus de liens que
ça,
avec à chaque fois une table associative.
Le nombre d'associatives et le nombre de fichiers ne me permettent pas de
regrouper les données en code, mais m'oblige à le faire en SQL pour des
raisons de performances.
Exemple pratique :
J'envoie un email pour le projet « TestProjet » à deux Adresses et deux
contacts. :
Adresse1, Adresse2, Contact1 (Attaché à Adresse 3), Contact2 (Attaché à
Adresse 4),
Voilà ce que la vue devrait afficher :
(IMAGE)
Si le même fichier avait été aussi rattaché au projet « TestProjet_Bis »,
voilà ce que la vue devrait afficher :
(IMAGE)
Si il y a un autre fichier « Mon Email 2 » rattaché à rien du tout, mais
qui
existe, voilà ce que la vue devrait afficher :
(IMAGE)
Et ainsi de suite.
A noter que dans l'exemple, je décris le fonctionnement des fichiers
autour
de projet, adresses et contacts, mais dans la réalité, les fichier sont
aussi rattachés (associatives) à d'autres éléments : offre, prospections,
commandes, articles, sous-projets, catégories, devis etc. Donc la vue est
bien plus complexe.
Structure de la base de données des exemples (très réduite et simplifiée)
:
(IMAGE)
Voilà...
Je vous remercie de votre aide, je suis vraiement perdu, SQL n'étant pas
vraiement le domaine dans lequel je suis le plus à l'aise!
--
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.datasapiens.com ***********************
postez le DDL de vos tables (CREATE TABLE=) ainsi qu'un jeu de données
d'essais cela nous aidera à vous montrer la requête adéquate.
A +
news.sunrise.ch a écrit :Bonjour,
Je sollicite votre aide afin de m'aider à résoudre un problème: Je
rencontre un problème pour la création d'une vue sur une base de données
SQL.
Afin de mieux expliquer le problème, j'ai fait des images illustratives,
je vous invite à télécharger le fichier
sur:
http://selvmatt.no-ip.com/public/vue.doc
Voici le texte sans les images afin de vous donner une idée du problème,
si
vous ne voulez pas télécharger le fichier:
Mon logiciel permet d'envoyer des emails et de rattacher des fichier de
tous
types à des adresses, des contacts, des projets (de construction ou
autre),
des devis, des offres, etc. Toutes les possibilités sont envisagées. Un
fichier peut être associé à tout et à rien. Il peut parfaitement être
associé à un projet, une offre et une adresse, et rien d'autre, tout
comme
il peut être associé à un devis, plusieurs adresses et plusieurs contacts
et
rien d'autre.
Ces emails et fichiers sont ensuite sauvés et un enregistrement est crée
dans la base de données dans une table FICHIERS (qui sert entre autre à
d'autres
utilisations) et des liens sont crées avec le projet, adresses et
contacts
éventuels.
Donc à ce stade, le fichier existe en tant qu'entité dans la base de
données. C'est ce sur quoi je centre mon intérêt à présent, le fichier
réel
n'étant pas important. Selon moi, la structure de la base de données est
bien modélisée, d'autant que le logiciel tourne depuis pas mal de temps
et
qu'aucun problème n'a été signalé jusqu'à présent. Un table centrale
FICHIERS, et des tables associatives autour, afin de s'y « brancher »
Le problème n'est pas dans la structure de la base pour ces fichiers,
mais
plutôt dans la création d'une seule et unique vue, aussi complexe
soit-elle,
sur laquelle travailler afin de retrouver les fichiers par critères.
Concrètement, il y a une table FICHIERS, une table PROJETS (si un mail
concerne un projet) une table ADRESSES (qui représente des sociétés), une
table CONTACTS (qui représente des personnes, qui peuvent être liées à
une
adresse). Pour chacune de ces tables, il y a une table associative avec
la
table FICHIERS afin de faire le lien. Tout ceci fonctionne ainsi :
Lorsqu'un email est créé, j'insère un enregistrement dans la table
FICHIERS.
S'il concerne un projet (ou plusieurs), j'insère une association avec la
table PROJETS. Si une adresse de société est dans la liste des
destinataires
(ou plusieurs) j'insère une association avec la table ADRESSES. Si un
contact est dans la liste des destinataires (ou plusieurs) j'insère une
association avec la table CONTACTS et une dans la table ADRESSES, si le
contact fait partie de cette adresse (on considère que le mail a aussi
été
envoyé à la société, pratique pour la recherche, si le contact
disparaissait).
Ceci étant fait, je peux faire mes requêtes et retrouver tout ce que je
cherche sur mon fichier.
Mon problème est dans le fait que je voudrais faire une vue de TOUS les
fichiers de la base de données (il peut y en avoir 100 000 !) afin de
l'afficher
à l'utilisateur, et que l'utilisateur ait une vue d'ensemble pour chaque
fichier. TOUTES les informations doivent figurer sur cette vue.
En fait cette vue sera reprise dans un formulaire et l'utilisateur aura
tous
les fichiers sous les yeux et ensuite il pourra les filtrer par critères.
A noter que pour l'exemple, je ne parle que des liens entre les projets,
adresses et contacts, mais qu'en réalité j'ai beaucoup plus de liens que
ça,
avec à chaque fois une table associative.
Le nombre d'associatives et le nombre de fichiers ne me permettent pas de
regrouper les données en code, mais m'oblige à le faire en SQL pour des
raisons de performances.
Exemple pratique :
J'envoie un email pour le projet « TestProjet » à deux Adresses et deux
contacts. :
Adresse1, Adresse2, Contact1 (Attaché à Adresse 3), Contact2 (Attaché à
Adresse 4),
Voilà ce que la vue devrait afficher :
(IMAGE)
Si le même fichier avait été aussi rattaché au projet « TestProjet_Bis »,
voilà ce que la vue devrait afficher :
(IMAGE)
Si il y a un autre fichier « Mon Email 2 » rattaché à rien du tout, mais
qui
existe, voilà ce que la vue devrait afficher :
(IMAGE)
Et ainsi de suite.
A noter que dans l'exemple, je décris le fonctionnement des fichiers
autour
de projet, adresses et contacts, mais dans la réalité, les fichier sont
aussi rattachés (associatives) à d'autres éléments : offre, prospections,
commandes, articles, sous-projets, catégories, devis etc. Donc la vue est
bien plus complexe.
Structure de la base de données des exemples (très réduite et simplifiée)
:
(IMAGE)
Voilà...
Je vous remercie de votre aide, je suis vraiement perdu, SQL n'étant pas
vraiement le domaine dans lequel je suis le plus à l'aise!
--
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.datasapiens.com ***********************
postez le DDL de vos tables (CREATE TABLE=) ainsi qu'un jeu de données
d'essais cela nous aidera à vous montrer la requête adéquate.
A +
news.sunrise.ch a écrit :Bonjour,
Je sollicite votre aide afin de m'aider à résoudre un problème: Je
rencontre un problème pour la création d'une vue sur une base de données
SQL.
Afin de mieux expliquer le problème, j'ai fait des images illustratives,
je vous invite à télécharger le fichier
sur:
http://selvmatt.no-ip.com/public/vue.doc
Voici le texte sans les images afin de vous donner une idée du problème,
si
vous ne voulez pas télécharger le fichier:
Mon logiciel permet d'envoyer des emails et de rattacher des fichier de
tous
types à des adresses, des contacts, des projets (de construction ou
autre),
des devis, des offres, etc. Toutes les possibilités sont envisagées. Un
fichier peut être associé à tout et à rien. Il peut parfaitement être
associé à un projet, une offre et une adresse, et rien d'autre, tout
comme
il peut être associé à un devis, plusieurs adresses et plusieurs contacts
et
rien d'autre.
Ces emails et fichiers sont ensuite sauvés et un enregistrement est crée
dans la base de données dans une table FICHIERS (qui sert entre autre à
d'autres
utilisations) et des liens sont crées avec le projet, adresses et
contacts
éventuels.
Donc à ce stade, le fichier existe en tant qu'entité dans la base de
données. C'est ce sur quoi je centre mon intérêt à présent, le fichier
réel
n'étant pas important. Selon moi, la structure de la base de données est
bien modélisée, d'autant que le logiciel tourne depuis pas mal de temps
et
qu'aucun problème n'a été signalé jusqu'à présent. Un table centrale
FICHIERS, et des tables associatives autour, afin de s'y « brancher »
Le problème n'est pas dans la structure de la base pour ces fichiers,
mais
plutôt dans la création d'une seule et unique vue, aussi complexe
soit-elle,
sur laquelle travailler afin de retrouver les fichiers par critères.
Concrètement, il y a une table FICHIERS, une table PROJETS (si un mail
concerne un projet) une table ADRESSES (qui représente des sociétés), une
table CONTACTS (qui représente des personnes, qui peuvent être liées à
une
adresse). Pour chacune de ces tables, il y a une table associative avec
la
table FICHIERS afin de faire le lien. Tout ceci fonctionne ainsi :
Lorsqu'un email est créé, j'insère un enregistrement dans la table
FICHIERS.
S'il concerne un projet (ou plusieurs), j'insère une association avec la
table PROJETS. Si une adresse de société est dans la liste des
destinataires
(ou plusieurs) j'insère une association avec la table ADRESSES. Si un
contact est dans la liste des destinataires (ou plusieurs) j'insère une
association avec la table CONTACTS et une dans la table ADRESSES, si le
contact fait partie de cette adresse (on considère que le mail a aussi
été
envoyé à la société, pratique pour la recherche, si le contact
disparaissait).
Ceci étant fait, je peux faire mes requêtes et retrouver tout ce que je
cherche sur mon fichier.
Mon problème est dans le fait que je voudrais faire une vue de TOUS les
fichiers de la base de données (il peut y en avoir 100 000 !) afin de
l'afficher
à l'utilisateur, et que l'utilisateur ait une vue d'ensemble pour chaque
fichier. TOUTES les informations doivent figurer sur cette vue.
En fait cette vue sera reprise dans un formulaire et l'utilisateur aura
tous
les fichiers sous les yeux et ensuite il pourra les filtrer par critères.
A noter que pour l'exemple, je ne parle que des liens entre les projets,
adresses et contacts, mais qu'en réalité j'ai beaucoup plus de liens que
ça,
avec à chaque fois une table associative.
Le nombre d'associatives et le nombre de fichiers ne me permettent pas de
regrouper les données en code, mais m'oblige à le faire en SQL pour des
raisons de performances.
Exemple pratique :
J'envoie un email pour le projet « TestProjet » à deux Adresses et deux
contacts. :
Adresse1, Adresse2, Contact1 (Attaché à Adresse 3), Contact2 (Attaché à
Adresse 4),
Voilà ce que la vue devrait afficher :
(IMAGE)
Si le même fichier avait été aussi rattaché au projet « TestProjet_Bis »,
voilà ce que la vue devrait afficher :
(IMAGE)
Si il y a un autre fichier « Mon Email 2 » rattaché à rien du tout, mais
qui
existe, voilà ce que la vue devrait afficher :
(IMAGE)
Et ainsi de suite.
A noter que dans l'exemple, je décris le fonctionnement des fichiers
autour
de projet, adresses et contacts, mais dans la réalité, les fichier sont
aussi rattachés (associatives) à d'autres éléments : offre, prospections,
commandes, articles, sous-projets, catégories, devis etc. Donc la vue est
bien plus complexe.
Structure de la base de données des exemples (très réduite et simplifiée)
:
(IMAGE)
Voilà...
Je vous remercie de votre aide, je suis vraiement perdu, SQL n'étant pas
vraiement le domaine dans lequel je suis le plus à l'aise!
--
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.datasapiens.com ***********************
postez le DDL de vos tables (CREATE TABLE=) ainsi qu'un jeu de données
d'essais cela nous aidera à vous montrer la requête adéquate.
A +
news.sunrise.ch a écrit :
Bonjour,
Je sollicite votre aide afin de m'aider à résoudre un problème: Je
rencontre un problème pour la création d'une vue sur une base de données
SQL.
Afin de mieux expliquer le problème, j'ai fait des images illustratives,
je vous invite à télécharger le fichier
sur:
http://selvmatt.no-ip.com/public/vue.doc
Voici le texte sans les images afin de vous donner une idée du problème,
si
vous ne voulez pas télécharger le fichier:
Mon logiciel permet d'envoyer des emails et de rattacher des fichier de
tous
types à des adresses, des contacts, des projets (de construction ou
autre),
des devis, des offres, etc. Toutes les possibilités sont envisagées. Un
fichier peut être associé à tout et à rien. Il peut parfaitement être
associé à un projet, une offre et une adresse, et rien d'autre, tout
comme
il peut être associé à un devis, plusieurs adresses et plusieurs contacts
et
rien d'autre.
Ces emails et fichiers sont ensuite sauvés et un enregistrement est crée
dans la base de données dans une table FICHIERS (qui sert entre autre à
d'autres
utilisations) et des liens sont crées avec le projet, adresses et
contacts
éventuels.
Donc à ce stade, le fichier existe en tant qu'entité dans la base de
données. C'est ce sur quoi je centre mon intérêt à présent, le fichier
réel
n'étant pas important. Selon moi, la structure de la base de données est
bien modélisée, d'autant que le logiciel tourne depuis pas mal de temps
et
qu'aucun problème n'a été signalé jusqu'à présent. Un table centrale
FICHIERS, et des tables associatives autour, afin de s'y « brancher »
Le problème n'est pas dans la structure de la base pour ces fichiers,
mais
plutôt dans la création d'une seule et unique vue, aussi complexe
soit-elle,
sur laquelle travailler afin de retrouver les fichiers par critères.
Concrètement, il y a une table FICHIERS, une table PROJETS (si un mail
concerne un projet) une table ADRESSES (qui représente des sociétés), une
table CONTACTS (qui représente des personnes, qui peuvent être liées à
une
adresse). Pour chacune de ces tables, il y a une table associative avec
la
table FICHIERS afin de faire le lien. Tout ceci fonctionne ainsi :
Lorsqu'un email est créé, j'insère un enregistrement dans la table
FICHIERS.
S'il concerne un projet (ou plusieurs), j'insère une association avec la
table PROJETS. Si une adresse de société est dans la liste des
destinataires
(ou plusieurs) j'insère une association avec la table ADRESSES. Si un
contact est dans la liste des destinataires (ou plusieurs) j'insère une
association avec la table CONTACTS et une dans la table ADRESSES, si le
contact fait partie de cette adresse (on considère que le mail a aussi
été
envoyé à la société, pratique pour la recherche, si le contact
disparaissait).
Ceci étant fait, je peux faire mes requêtes et retrouver tout ce que je
cherche sur mon fichier.
Mon problème est dans le fait que je voudrais faire une vue de TOUS les
fichiers de la base de données (il peut y en avoir 100 000 !) afin de
l'afficher
à l'utilisateur, et que l'utilisateur ait une vue d'ensemble pour chaque
fichier. TOUTES les informations doivent figurer sur cette vue.
En fait cette vue sera reprise dans un formulaire et l'utilisateur aura
tous
les fichiers sous les yeux et ensuite il pourra les filtrer par critères.
A noter que pour l'exemple, je ne parle que des liens entre les projets,
adresses et contacts, mais qu'en réalité j'ai beaucoup plus de liens que
ça,
avec à chaque fois une table associative.
Le nombre d'associatives et le nombre de fichiers ne me permettent pas de
regrouper les données en code, mais m'oblige à le faire en SQL pour des
raisons de performances.
Exemple pratique :
J'envoie un email pour le projet « TestProjet » à deux Adresses et deux
contacts. :
Adresse1, Adresse2, Contact1 (Attaché à Adresse 3), Contact2 (Attaché à
Adresse 4),
Voilà ce que la vue devrait afficher :
(IMAGE)
Si le même fichier avait été aussi rattaché au projet « TestProjet_Bis »,
voilà ce que la vue devrait afficher :
(IMAGE)
Si il y a un autre fichier « Mon Email 2 » rattaché à rien du tout, mais
qui
existe, voilà ce que la vue devrait afficher :
(IMAGE)
Et ainsi de suite.
A noter que dans l'exemple, je décris le fonctionnement des fichiers
autour
de projet, adresses et contacts, mais dans la réalité, les fichier sont
aussi rattachés (associatives) à d'autres éléments : offre, prospections,
commandes, articles, sous-projets, catégories, devis etc. Donc la vue est
bien plus complexe.
Structure de la base de données des exemples (très réduite et simplifiée)
:
(IMAGE)
Voilà...
Je vous remercie de votre aide, je suis vraiement perdu, SQL n'étant pas
vraiement le domaine dans lequel je suis le plus à l'aise!
--
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.datasapiens.com ***********************
postez le DDL de vos tables (CREATE TABLE=) ainsi qu'un jeu de données
d'essais cela nous aidera à vous montrer la requête adéquate.
A +
news.sunrise.ch a écrit :Bonjour,
Je sollicite votre aide afin de m'aider à résoudre un problème: Je
rencontre un problème pour la création d'une vue sur une base de données
SQL.
Afin de mieux expliquer le problème, j'ai fait des images illustratives,
je vous invite à télécharger le fichier
sur:
http://selvmatt.no-ip.com/public/vue.doc
Voici le texte sans les images afin de vous donner une idée du problème,
si
vous ne voulez pas télécharger le fichier:
Mon logiciel permet d'envoyer des emails et de rattacher des fichier de
tous
types à des adresses, des contacts, des projets (de construction ou
autre),
des devis, des offres, etc. Toutes les possibilités sont envisagées. Un
fichier peut être associé à tout et à rien. Il peut parfaitement être
associé à un projet, une offre et une adresse, et rien d'autre, tout
comme
il peut être associé à un devis, plusieurs adresses et plusieurs contacts
et
rien d'autre.
Ces emails et fichiers sont ensuite sauvés et un enregistrement est crée
dans la base de données dans une table FICHIERS (qui sert entre autre à
d'autres
utilisations) et des liens sont crées avec le projet, adresses et
contacts
éventuels.
Donc à ce stade, le fichier existe en tant qu'entité dans la base de
données. C'est ce sur quoi je centre mon intérêt à présent, le fichier
réel
n'étant pas important. Selon moi, la structure de la base de données est
bien modélisée, d'autant que le logiciel tourne depuis pas mal de temps
et
qu'aucun problème n'a été signalé jusqu'à présent. Un table centrale
FICHIERS, et des tables associatives autour, afin de s'y « brancher »
Le problème n'est pas dans la structure de la base pour ces fichiers,
mais
plutôt dans la création d'une seule et unique vue, aussi complexe
soit-elle,
sur laquelle travailler afin de retrouver les fichiers par critères.
Concrètement, il y a une table FICHIERS, une table PROJETS (si un mail
concerne un projet) une table ADRESSES (qui représente des sociétés), une
table CONTACTS (qui représente des personnes, qui peuvent être liées à
une
adresse). Pour chacune de ces tables, il y a une table associative avec
la
table FICHIERS afin de faire le lien. Tout ceci fonctionne ainsi :
Lorsqu'un email est créé, j'insère un enregistrement dans la table
FICHIERS.
S'il concerne un projet (ou plusieurs), j'insère une association avec la
table PROJETS. Si une adresse de société est dans la liste des
destinataires
(ou plusieurs) j'insère une association avec la table ADRESSES. Si un
contact est dans la liste des destinataires (ou plusieurs) j'insère une
association avec la table CONTACTS et une dans la table ADRESSES, si le
contact fait partie de cette adresse (on considère que le mail a aussi
été
envoyé à la société, pratique pour la recherche, si le contact
disparaissait).
Ceci étant fait, je peux faire mes requêtes et retrouver tout ce que je
cherche sur mon fichier.
Mon problème est dans le fait que je voudrais faire une vue de TOUS les
fichiers de la base de données (il peut y en avoir 100 000 !) afin de
l'afficher
à l'utilisateur, et que l'utilisateur ait une vue d'ensemble pour chaque
fichier. TOUTES les informations doivent figurer sur cette vue.
En fait cette vue sera reprise dans un formulaire et l'utilisateur aura
tous
les fichiers sous les yeux et ensuite il pourra les filtrer par critères.
A noter que pour l'exemple, je ne parle que des liens entre les projets,
adresses et contacts, mais qu'en réalité j'ai beaucoup plus de liens que
ça,
avec à chaque fois une table associative.
Le nombre d'associatives et le nombre de fichiers ne me permettent pas de
regrouper les données en code, mais m'oblige à le faire en SQL pour des
raisons de performances.
Exemple pratique :
J'envoie un email pour le projet « TestProjet » à deux Adresses et deux
contacts. :
Adresse1, Adresse2, Contact1 (Attaché à Adresse 3), Contact2 (Attaché à
Adresse 4),
Voilà ce que la vue devrait afficher :
(IMAGE)
Si le même fichier avait été aussi rattaché au projet « TestProjet_Bis »,
voilà ce que la vue devrait afficher :
(IMAGE)
Si il y a un autre fichier « Mon Email 2 » rattaché à rien du tout, mais
qui
existe, voilà ce que la vue devrait afficher :
(IMAGE)
Et ainsi de suite.
A noter que dans l'exemple, je décris le fonctionnement des fichiers
autour
de projet, adresses et contacts, mais dans la réalité, les fichier sont
aussi rattachés (associatives) à d'autres éléments : offre, prospections,
commandes, articles, sous-projets, catégories, devis etc. Donc la vue est
bien plus complexe.
Structure de la base de données des exemples (très réduite et simplifiée)
:
(IMAGE)
Voilà...
Je vous remercie de votre aide, je suis vraiement perdu, SQL n'étant pas
vraiement le domaine dans lequel je suis le plus à l'aise!
--
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.datasapiens.com ***********************
Bonjour,
Voici comme convenu le script de création des tables + insertion de quelques
données test. J'ai crée 2 projet, 5 adresses, 2 contacts (liés tous 2 à une
adresse) et 2 fichiers.
J'éspère que vous puissiez m'aider à trouver une solution. En attendant j'ai
mis en place une solution temporaire en interrogeant la base de données avec
une requête et j'arrive encore à m'en sortir.
Merci!
-- Création des tables
CREATE TABLE [dbo].[ADRESSES] (
[ID_Adresse] [int] IDENTITY (1, 1) NOT NULL ,
[NomAdresse] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CONTACTS] (
[ID_Contact] [int] IDENTITY (1, 1) NOT NULL ,
[NomContact] [varchar] (50) COLLATE French_CI_AS NOT NULL ,
[ID_Adresse] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS] (
[ID_Fichier] [int] IDENTITY (1, 1) NOT NULL ,
[Path] [varchar] (255) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_ADRESSES] (
[ID_FichierAdresse] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Adresse] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_CONTACTS] (
[ID_FichierContact] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Contact] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_PROJETS] (
[ID_FichierProjet] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Projet] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[PROJETS] (
[ID_Projet] [int] IDENTITY (1, 1) NOT NULL ,
[NomProjet] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES] PRIMARY KEY CLUSTERED
(
[ID_Adresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_Contact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS] PRIMARY KEY CLUSTERED
(
[ID_Fichier]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierAdresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierContact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
[ID_FichierProjet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_PROJETS] PRIMARY KEY CLUSTERED
(
[ID_Projet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] ADD
CONSTRAINT [FK_CONTACTS_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
)
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] ADD
CONSTRAINT [FK_FICHIERS_ADRESSES_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
),
CONSTRAINT [FK_FICHIERS_ADRESSES_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] ADD
CONSTRAINT [FK_FICHIERS_CONTACTS_CONTACTS] FOREIGN KEY
(
[ID_Contact]
) REFERENCES [dbo].[CONTACTS] (
[ID_Contact]
),
CONSTRAINT [FK_FICHIERS_CONTACTS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] ADD
CONSTRAINT [FK_FICHIERS_PROJETS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
),
CONSTRAINT [FK_FICHIERS_PROJETS_PROJETS] FOREIGN KEY
(
[ID_Projet]
) REFERENCES [dbo].[PROJETS] (
[ID_Projet]
)
GO
-- Création des projets
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 1')
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 2')
-- Création des adresses
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 1')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 2')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 3')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 4')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 5')
-- Création des contacts
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 1', 3)
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 2', 4)
-- Crétion des fichiers
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 1.eml')
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 2.eml')
-- Création des associations avec les fichiers
-- Fichiers - Projets
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,1)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (2,2)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,2)
-- Fichiers - Adresses
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,1)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,2)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,3)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,4)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,5)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (2,5)
-- Fichiers - Contacts
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,1)
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,2)
Bonjour,
Voici comme convenu le script de création des tables + insertion de quelques
données test. J'ai crée 2 projet, 5 adresses, 2 contacts (liés tous 2 à une
adresse) et 2 fichiers.
J'éspère que vous puissiez m'aider à trouver une solution. En attendant j'ai
mis en place une solution temporaire en interrogeant la base de données avec
une requête et j'arrive encore à m'en sortir.
Merci!
-- Création des tables
CREATE TABLE [dbo].[ADRESSES] (
[ID_Adresse] [int] IDENTITY (1, 1) NOT NULL ,
[NomAdresse] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CONTACTS] (
[ID_Contact] [int] IDENTITY (1, 1) NOT NULL ,
[NomContact] [varchar] (50) COLLATE French_CI_AS NOT NULL ,
[ID_Adresse] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS] (
[ID_Fichier] [int] IDENTITY (1, 1) NOT NULL ,
[Path] [varchar] (255) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_ADRESSES] (
[ID_FichierAdresse] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Adresse] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_CONTACTS] (
[ID_FichierContact] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Contact] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_PROJETS] (
[ID_FichierProjet] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Projet] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[PROJETS] (
[ID_Projet] [int] IDENTITY (1, 1) NOT NULL ,
[NomProjet] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES] PRIMARY KEY CLUSTERED
(
[ID_Adresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_Contact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS] PRIMARY KEY CLUSTERED
(
[ID_Fichier]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierAdresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierContact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
[ID_FichierProjet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_PROJETS] PRIMARY KEY CLUSTERED
(
[ID_Projet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] ADD
CONSTRAINT [FK_CONTACTS_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
)
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] ADD
CONSTRAINT [FK_FICHIERS_ADRESSES_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
),
CONSTRAINT [FK_FICHIERS_ADRESSES_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] ADD
CONSTRAINT [FK_FICHIERS_CONTACTS_CONTACTS] FOREIGN KEY
(
[ID_Contact]
) REFERENCES [dbo].[CONTACTS] (
[ID_Contact]
),
CONSTRAINT [FK_FICHIERS_CONTACTS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] ADD
CONSTRAINT [FK_FICHIERS_PROJETS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
),
CONSTRAINT [FK_FICHIERS_PROJETS_PROJETS] FOREIGN KEY
(
[ID_Projet]
) REFERENCES [dbo].[PROJETS] (
[ID_Projet]
)
GO
-- Création des projets
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 1')
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 2')
-- Création des adresses
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 1')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 2')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 3')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 4')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 5')
-- Création des contacts
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 1', 3)
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 2', 4)
-- Crétion des fichiers
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 1.eml')
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 2.eml')
-- Création des associations avec les fichiers
-- Fichiers - Projets
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,1)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (2,2)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,2)
-- Fichiers - Adresses
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,1)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,2)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,3)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,4)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,5)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (2,5)
-- Fichiers - Contacts
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,1)
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,2)
Bonjour,
Voici comme convenu le script de création des tables + insertion de quelques
données test. J'ai crée 2 projet, 5 adresses, 2 contacts (liés tous 2 à une
adresse) et 2 fichiers.
J'éspère que vous puissiez m'aider à trouver une solution. En attendant j'ai
mis en place une solution temporaire en interrogeant la base de données avec
une requête et j'arrive encore à m'en sortir.
Merci!
-- Création des tables
CREATE TABLE [dbo].[ADRESSES] (
[ID_Adresse] [int] IDENTITY (1, 1) NOT NULL ,
[NomAdresse] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CONTACTS] (
[ID_Contact] [int] IDENTITY (1, 1) NOT NULL ,
[NomContact] [varchar] (50) COLLATE French_CI_AS NOT NULL ,
[ID_Adresse] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS] (
[ID_Fichier] [int] IDENTITY (1, 1) NOT NULL ,
[Path] [varchar] (255) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_ADRESSES] (
[ID_FichierAdresse] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Adresse] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_CONTACTS] (
[ID_FichierContact] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Contact] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_PROJETS] (
[ID_FichierProjet] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Projet] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[PROJETS] (
[ID_Projet] [int] IDENTITY (1, 1) NOT NULL ,
[NomProjet] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES] PRIMARY KEY CLUSTERED
(
[ID_Adresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_Contact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS] PRIMARY KEY CLUSTERED
(
[ID_Fichier]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierAdresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierContact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
[ID_FichierProjet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_PROJETS] PRIMARY KEY CLUSTERED
(
[ID_Projet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] ADD
CONSTRAINT [FK_CONTACTS_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
)
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] ADD
CONSTRAINT [FK_FICHIERS_ADRESSES_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
),
CONSTRAINT [FK_FICHIERS_ADRESSES_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] ADD
CONSTRAINT [FK_FICHIERS_CONTACTS_CONTACTS] FOREIGN KEY
(
[ID_Contact]
) REFERENCES [dbo].[CONTACTS] (
[ID_Contact]
),
CONSTRAINT [FK_FICHIERS_CONTACTS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] ADD
CONSTRAINT [FK_FICHIERS_PROJETS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
),
CONSTRAINT [FK_FICHIERS_PROJETS_PROJETS] FOREIGN KEY
(
[ID_Projet]
) REFERENCES [dbo].[PROJETS] (
[ID_Projet]
)
GO
-- Création des projets
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 1')
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 2')
-- Création des adresses
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 1')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 2')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 3')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 4')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 5')
-- Création des contacts
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 1', 3)
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 2', 4)
-- Crétion des fichiers
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 1.eml')
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 2.eml')
-- Création des associations avec les fichiers
-- Fichiers - Projets
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,1)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (2,2)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,2)
-- Fichiers - Adresses
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,1)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,2)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,3)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,4)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,5)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (2,5)
-- Fichiers - Contacts
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,1)
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,2)
Matteo a écrit :Bonjour,
Voici comme convenu le script de création des tables + insertion de
quelques données test. J'ai crée 2 projet, 5 adresses, 2 contacts (liés
tous 2 à une adresse) et 2 fichiers.
J'éspère que vous puissiez m'aider à trouver une solution. En attendant
j'ai mis en place une solution temporaire en interrogeant la base de
données avec une requête et j'arrive encore à m'en sortir.
Merci!
-- Création des tables
CREATE TABLE [dbo].[ADRESSES] (
[ID_Adresse] [int] IDENTITY (1, 1) NOT NULL ,
[NomAdresse] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CONTACTS] (
[ID_Contact] [int] IDENTITY (1, 1) NOT NULL ,
[NomContact] [varchar] (50) COLLATE French_CI_AS NOT NULL ,
[ID_Adresse] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS] (
[ID_Fichier] [int] IDENTITY (1, 1) NOT NULL ,
[Path] [varchar] (255) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_ADRESSES] (
[ID_FichierAdresse] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Adresse] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_CONTACTS] (
[ID_FichierContact] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Contact] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_PROJETS] (
[ID_FichierProjet] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Projet] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[PROJETS] (
[ID_Projet] [int] IDENTITY (1, 1) NOT NULL ,
[NomProjet] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES] PRIMARY KEY CLUSTERED
(
[ID_Adresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_Contact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS] PRIMARY KEY CLUSTERED
(
[ID_Fichier]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierAdresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierContact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
[ID_FichierProjet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_PROJETS] PRIMARY KEY CLUSTERED
(
[ID_Projet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] ADD
CONSTRAINT [FK_CONTACTS_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
)
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] ADD
CONSTRAINT [FK_FICHIERS_ADRESSES_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
),
CONSTRAINT [FK_FICHIERS_ADRESSES_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] ADD
CONSTRAINT [FK_FICHIERS_CONTACTS_CONTACTS] FOREIGN KEY
(
[ID_Contact]
) REFERENCES [dbo].[CONTACTS] (
[ID_Contact]
),
CONSTRAINT [FK_FICHIERS_CONTACTS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] ADD
CONSTRAINT [FK_FICHIERS_PROJETS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
),
CONSTRAINT [FK_FICHIERS_PROJETS_PROJETS] FOREIGN KEY
(
[ID_Projet]
) REFERENCES [dbo].[PROJETS] (
[ID_Projet]
)
GO
-- Création des projets
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 1')
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 2')
-- Création des adresses
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 1')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 2')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 3')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 4')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 5')
-- Création des contacts
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 1', 3)
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 2', 4)
-- Crétion des fichiers
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 1.eml')
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 2.eml')
-- Création des associations avec les fichiers
-- Fichiers - Projets
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,1)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (2,2)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,2)
-- Fichiers - Adresses
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,1)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,2)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,3)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,4)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,5)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (2,5)
-- Fichiers - Contacts
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,1)
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,2)
Pouvez vous donner un exemple de la réponse attendue sous la forme :
colone1 colonne2 colonne3
----------- ---------- -----------
sdsdvd zvsvsv svsdvdv
sdvsvs sdvsdvdv sdvsdvsdsd
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.datasapiens.com ***********************
Matteo a écrit :
Bonjour,
Voici comme convenu le script de création des tables + insertion de
quelques données test. J'ai crée 2 projet, 5 adresses, 2 contacts (liés
tous 2 à une adresse) et 2 fichiers.
J'éspère que vous puissiez m'aider à trouver une solution. En attendant
j'ai mis en place une solution temporaire en interrogeant la base de
données avec une requête et j'arrive encore à m'en sortir.
Merci!
-- Création des tables
CREATE TABLE [dbo].[ADRESSES] (
[ID_Adresse] [int] IDENTITY (1, 1) NOT NULL ,
[NomAdresse] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CONTACTS] (
[ID_Contact] [int] IDENTITY (1, 1) NOT NULL ,
[NomContact] [varchar] (50) COLLATE French_CI_AS NOT NULL ,
[ID_Adresse] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS] (
[ID_Fichier] [int] IDENTITY (1, 1) NOT NULL ,
[Path] [varchar] (255) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_ADRESSES] (
[ID_FichierAdresse] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Adresse] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_CONTACTS] (
[ID_FichierContact] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Contact] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_PROJETS] (
[ID_FichierProjet] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Projet] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[PROJETS] (
[ID_Projet] [int] IDENTITY (1, 1) NOT NULL ,
[NomProjet] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES] PRIMARY KEY CLUSTERED
(
[ID_Adresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_Contact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS] PRIMARY KEY CLUSTERED
(
[ID_Fichier]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierAdresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierContact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
[ID_FichierProjet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_PROJETS] PRIMARY KEY CLUSTERED
(
[ID_Projet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] ADD
CONSTRAINT [FK_CONTACTS_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
)
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] ADD
CONSTRAINT [FK_FICHIERS_ADRESSES_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
),
CONSTRAINT [FK_FICHIERS_ADRESSES_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] ADD
CONSTRAINT [FK_FICHIERS_CONTACTS_CONTACTS] FOREIGN KEY
(
[ID_Contact]
) REFERENCES [dbo].[CONTACTS] (
[ID_Contact]
),
CONSTRAINT [FK_FICHIERS_CONTACTS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] ADD
CONSTRAINT [FK_FICHIERS_PROJETS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
),
CONSTRAINT [FK_FICHIERS_PROJETS_PROJETS] FOREIGN KEY
(
[ID_Projet]
) REFERENCES [dbo].[PROJETS] (
[ID_Projet]
)
GO
-- Création des projets
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 1')
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 2')
-- Création des adresses
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 1')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 2')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 3')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 4')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 5')
-- Création des contacts
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 1', 3)
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 2', 4)
-- Crétion des fichiers
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 1.eml')
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 2.eml')
-- Création des associations avec les fichiers
-- Fichiers - Projets
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,1)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (2,2)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,2)
-- Fichiers - Adresses
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,1)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,2)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,3)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,4)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,5)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (2,5)
-- Fichiers - Contacts
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,1)
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,2)
Pouvez vous donner un exemple de la réponse attendue sous la forme :
colone1 colonne2 colonne3
----------- ---------- -----------
sdsdvd zvsvsv svsdvdv
sdvsvs sdvsdvdv sdvsdvsdsd
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.datasapiens.com ***********************
Matteo a écrit :Bonjour,
Voici comme convenu le script de création des tables + insertion de
quelques données test. J'ai crée 2 projet, 5 adresses, 2 contacts (liés
tous 2 à une adresse) et 2 fichiers.
J'éspère que vous puissiez m'aider à trouver une solution. En attendant
j'ai mis en place une solution temporaire en interrogeant la base de
données avec une requête et j'arrive encore à m'en sortir.
Merci!
-- Création des tables
CREATE TABLE [dbo].[ADRESSES] (
[ID_Adresse] [int] IDENTITY (1, 1) NOT NULL ,
[NomAdresse] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[CONTACTS] (
[ID_Contact] [int] IDENTITY (1, 1) NOT NULL ,
[NomContact] [varchar] (50) COLLATE French_CI_AS NOT NULL ,
[ID_Adresse] [int] NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS] (
[ID_Fichier] [int] IDENTITY (1, 1) NOT NULL ,
[Path] [varchar] (255) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_ADRESSES] (
[ID_FichierAdresse] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Adresse] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_CONTACTS] (
[ID_FichierContact] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Contact] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[FICHIERS_PROJETS] (
[ID_FichierProjet] [int] IDENTITY (1, 1) NOT NULL ,
[ID_Fichier] [int] NOT NULL ,
[ID_Projet] [int] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[PROJETS] (
[ID_Projet] [int] IDENTITY (1, 1) NOT NULL ,
[NomProjet] [varchar] (50) COLLATE French_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES] PRIMARY KEY CLUSTERED
(
[ID_Adresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_Contact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS] PRIMARY KEY CLUSTERED
(
[ID_Fichier]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] WITH NOCHECK ADD
CONSTRAINT [PK_ADRESSES_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierAdresse]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] WITH NOCHECK ADD
CONSTRAINT [PK_FICHIERS_CONTACTS] PRIMARY KEY CLUSTERED
(
[ID_FichierContact]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
[ID_FichierProjet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PROJETS] WITH NOCHECK ADD
CONSTRAINT [PK_PROJETS] PRIMARY KEY CLUSTERED
(
[ID_Projet]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CONTACTS] ADD
CONSTRAINT [FK_CONTACTS_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
)
GO
ALTER TABLE [dbo].[FICHIERS_ADRESSES] ADD
CONSTRAINT [FK_FICHIERS_ADRESSES_ADRESSES] FOREIGN KEY
(
[ID_Adresse]
) REFERENCES [dbo].[ADRESSES] (
[ID_Adresse]
),
CONSTRAINT [FK_FICHIERS_ADRESSES_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_CONTACTS] ADD
CONSTRAINT [FK_FICHIERS_CONTACTS_CONTACTS] FOREIGN KEY
(
[ID_Contact]
) REFERENCES [dbo].[CONTACTS] (
[ID_Contact]
),
CONSTRAINT [FK_FICHIERS_CONTACTS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
)
GO
ALTER TABLE [dbo].[FICHIERS_PROJETS] ADD
CONSTRAINT [FK_FICHIERS_PROJETS_FICHIERS] FOREIGN KEY
(
[ID_Fichier]
) REFERENCES [dbo].[FICHIERS] (
[ID_Fichier]
),
CONSTRAINT [FK_FICHIERS_PROJETS_PROJETS] FOREIGN KEY
(
[ID_Projet]
) REFERENCES [dbo].[PROJETS] (
[ID_Projet]
)
GO
-- Création des projets
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 1')
INSERT INTO dbo.PROJETS (NomProjet) VALUES ('Projet 2')
-- Création des adresses
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 1')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 2')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 3')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 4')
INSERT INTO dbo.ADRESSES (NomAdresse) VALUES ('Adresse 5')
-- Création des contacts
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 1', 3)
INSERT INTO dbo.CONTACTS (NomContact, ID_Adresse) VALUES ('Contact 2', 4)
-- Crétion des fichiers
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 1.eml')
INSERT INTO dbo.FICHIERS (Path) VALUES ('..Mon Email 2.eml')
-- Création des associations avec les fichiers
-- Fichiers - Projets
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,1)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (2,2)
INSERT INTO dbo.FICHIERS_PROJETS (ID_Fichier, ID_Projet) VALUES (1,2)
-- Fichiers - Adresses
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,1)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,2)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,3)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,4)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (1,5)
INSERT INTO dbo.FICHIERS_ADRESSES (ID_Fichier, ID_Adresse) VALUES (2,5)
-- Fichiers - Contacts
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,1)
INSERT INTO dbo.FICHIERS_CONTACTS (ID_Fichier, ID_Contact) VALUES (1,2)
Pouvez vous donner un exemple de la réponse attendue sous la forme :
colone1 colonne2 colonne3
----------- ---------- -----------
sdsdvd zvsvsv svsdvdv
sdvsvs sdvsdvdv sdvsdvsdsd
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.datasapiens.com ***********************