J'ai récupéré une base de données postgres ou aucune contrainte d'intégrité
n'existait.
Je les ai donc créée.
J'aimerai maintenant lister tous les enregistrement d'une table qui devrait
être dépendant d'un autre table et que ne le sont pas !
pour etre clair j'ai les deux table suivantes:
CREATE TABLE "resource" (
"idresource" serial NOT NULL,
"desc" text,
PRIMARY key (idresource)
);
CREATE TABLE "trucmuch" [
"idtrucmuch" serial NOT NULL,
"iddesc" integer,
PRIMARY key (idtrucmuch),
FOREIGN key (iddesc) REFERENCES resource (idresource)
);
j'aimerai trouver les idresource qui ne sont pas liée a la table trucmuch.
Bon evidement j'ai des dizaine de table qui sont liée a la table resource.
donc je ne peux pas simplement faire une requete avec une jointure.
pour le moment je n'ai pas trouvé d'autre solution que pour chaque
idresource
- commencer une transaction.
- faire un delete de l'idresource.
- regarder si le delete a fonctionné.
- faire un rollback.
voila ca me donne les resources non associée via une contrainte
d'intégrité...
mais je cherche une methode peut etre un peu moins bourrine.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
SQLpro
Une simple requête suffit :
DELETE FROM trucmuch WHERE iddesc NOT IN (SELECT idresource FROM resource)
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 Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies *********************** http://www.sqlspot.com *************************
WebShaker a écrit :
Salut.
J'ai récupéré une base de données postgres ou aucune contrainte d'intégrité n'existait. Je les ai donc créée.
J'aimerai maintenant lister tous les enregistrement d'une table qui devrait être dépendant d'un autre table et que ne le sont pas !
pour etre clair j'ai les deux table suivantes: CREATE TABLE "resource" ( "idresource" serial NOT NULL, "desc" text, PRIMARY key (idresource) );
CREATE TABLE "trucmuch" [ "idtrucmuch" serial NOT NULL, "iddesc" integer, PRIMARY key (idtrucmuch), FOREIGN key (iddesc) REFERENCES resource (idresource) );
j'aimerai trouver les idresource qui ne sont pas liée a la table trucmuch. Bon evidement j'ai des dizaine de table qui sont liée a la table resource. donc je ne peux pas simplement faire une requete avec une jointure.
pour le moment je n'ai pas trouvé d'autre solution que pour chaque idresource - commencer une transaction. - faire un delete de l'idresource. - regarder si le delete a fonctionné. - faire un rollback.
voila ca me donne les resources non associée via une contrainte d'intégrité...
mais je cherche une methode peut etre un peu moins bourrine.
Merci a+ Etienne
Une simple requête suffit :
DELETE FROM trucmuch
WHERE iddesc NOT IN (SELECT idresource
FROM resource)
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
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
WebShaker a écrit :
Salut.
J'ai récupéré une base de données postgres ou aucune contrainte d'intégrité
n'existait.
Je les ai donc créée.
J'aimerai maintenant lister tous les enregistrement d'une table qui devrait
être dépendant d'un autre table et que ne le sont pas !
pour etre clair j'ai les deux table suivantes:
CREATE TABLE "resource" (
"idresource" serial NOT NULL,
"desc" text,
PRIMARY key (idresource)
);
CREATE TABLE "trucmuch" [
"idtrucmuch" serial NOT NULL,
"iddesc" integer,
PRIMARY key (idtrucmuch),
FOREIGN key (iddesc) REFERENCES resource (idresource)
);
j'aimerai trouver les idresource qui ne sont pas liée a la table trucmuch.
Bon evidement j'ai des dizaine de table qui sont liée a la table resource.
donc je ne peux pas simplement faire une requete avec une jointure.
pour le moment je n'ai pas trouvé d'autre solution que pour chaque
idresource
- commencer une transaction.
- faire un delete de l'idresource.
- regarder si le delete a fonctionné.
- faire un rollback.
voila ca me donne les resources non associée via une contrainte
d'intégrité...
mais je cherche une methode peut etre un peu moins bourrine.
DELETE FROM trucmuch WHERE iddesc NOT IN (SELECT idresource FROM resource)
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 Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies *********************** http://www.sqlspot.com *************************
WebShaker a écrit :
Salut.
J'ai récupéré une base de données postgres ou aucune contrainte d'intégrité n'existait. Je les ai donc créée.
J'aimerai maintenant lister tous les enregistrement d'une table qui devrait être dépendant d'un autre table et que ne le sont pas !
pour etre clair j'ai les deux table suivantes: CREATE TABLE "resource" ( "idresource" serial NOT NULL, "desc" text, PRIMARY key (idresource) );
CREATE TABLE "trucmuch" [ "idtrucmuch" serial NOT NULL, "iddesc" integer, PRIMARY key (idtrucmuch), FOREIGN key (iddesc) REFERENCES resource (idresource) );
j'aimerai trouver les idresource qui ne sont pas liée a la table trucmuch. Bon evidement j'ai des dizaine de table qui sont liée a la table resource. donc je ne peux pas simplement faire une requete avec une jointure.
pour le moment je n'ai pas trouvé d'autre solution que pour chaque idresource - commencer une transaction. - faire un delete de l'idresource. - regarder si le delete a fonctionné. - faire un rollback.
voila ca me donne les resources non associée via une contrainte d'intégrité...
mais je cherche une methode peut etre un peu moins bourrine.
Merci a+ Etienne
WebShaker
Attention, je ne cherche pas a supprimer les enregistrements. mais a connaitre les idresource qui pourraient l'être.
dans le but de contrôler leur contenu avant de les supprimer.
Etienne
"SQLpro" a écrit dans le message de news: 4b8cc61a$0$10081$
Une simple requête suffit :
DELETE FROM trucmuch WHERE iddesc NOT IN (SELECT idresource FROM resource)
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 Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies *********************** http://www.sqlspot.com *************************
WebShaker a écrit :
Salut.
J'ai récupéré une base de données postgres ou aucune contrainte d'intégrité n'existait. Je les ai donc créée.
J'aimerai maintenant lister tous les enregistrement d'une table qui devrait être dépendant d'un autre table et que ne le sont pas !
pour etre clair j'ai les deux table suivantes: CREATE TABLE "resource" ( "idresource" serial NOT NULL, "desc" text, PRIMARY key (idresource) );
CREATE TABLE "trucmuch" [ "idtrucmuch" serial NOT NULL, "iddesc" integer, PRIMARY key (idtrucmuch), FOREIGN key (iddesc) REFERENCES resource (idresource) );
j'aimerai trouver les idresource qui ne sont pas liée a la table trucmuch. Bon evidement j'ai des dizaine de table qui sont liée a la table resource. donc je ne peux pas simplement faire une requete avec une jointure.
pour le moment je n'ai pas trouvé d'autre solution que pour chaque idresource - commencer une transaction. - faire un delete de l'idresource. - regarder si le delete a fonctionné. - faire un rollback.
voila ca me donne les resources non associée via une contrainte d'intégrité...
mais je cherche une methode peut etre un peu moins bourrine.
Merci a+ Etienne
Attention, je ne cherche pas a supprimer les enregistrements.
mais a connaitre les idresource qui pourraient l'être.
dans le but de contrôler leur contenu avant de les supprimer.
Etienne
"SQLpro" <brouardf@club-internet.fr> a écrit dans le message de news:
4b8cc61a$0$10081$426a74cc@news.free.fr...
Une simple requête suffit :
DELETE FROM trucmuch
WHERE iddesc NOT IN (SELECT idresource
FROM resource)
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
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
WebShaker a écrit :
Salut.
J'ai récupéré une base de données postgres ou aucune contrainte
d'intégrité n'existait.
Je les ai donc créée.
J'aimerai maintenant lister tous les enregistrement d'une table qui
devrait être dépendant d'un autre table et que ne le sont pas !
pour etre clair j'ai les deux table suivantes:
CREATE TABLE "resource" (
"idresource" serial NOT NULL,
"desc" text,
PRIMARY key (idresource)
);
CREATE TABLE "trucmuch" [
"idtrucmuch" serial NOT NULL,
"iddesc" integer,
PRIMARY key (idtrucmuch),
FOREIGN key (iddesc) REFERENCES resource (idresource)
);
j'aimerai trouver les idresource qui ne sont pas liée a la table
trucmuch.
Bon evidement j'ai des dizaine de table qui sont liée a la table
resource. donc je ne peux pas simplement faire une requete avec une
jointure.
pour le moment je n'ai pas trouvé d'autre solution que pour chaque
idresource
- commencer une transaction.
- faire un delete de l'idresource.
- regarder si le delete a fonctionné.
- faire un rollback.
voila ca me donne les resources non associée via une contrainte
d'intégrité...
mais je cherche une methode peut etre un peu moins bourrine.
Attention, je ne cherche pas a supprimer les enregistrements. mais a connaitre les idresource qui pourraient l'être.
dans le but de contrôler leur contenu avant de les supprimer.
Etienne
"SQLpro" a écrit dans le message de news: 4b8cc61a$0$10081$
Une simple requête suffit :
DELETE FROM trucmuch WHERE iddesc NOT IN (SELECT idresource FROM resource)
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 Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies *********************** http://www.sqlspot.com *************************
WebShaker a écrit :
Salut.
J'ai récupéré une base de données postgres ou aucune contrainte d'intégrité n'existait. Je les ai donc créée.
J'aimerai maintenant lister tous les enregistrement d'une table qui devrait être dépendant d'un autre table et que ne le sont pas !
pour etre clair j'ai les deux table suivantes: CREATE TABLE "resource" ( "idresource" serial NOT NULL, "desc" text, PRIMARY key (idresource) );
CREATE TABLE "trucmuch" [ "idtrucmuch" serial NOT NULL, "iddesc" integer, PRIMARY key (idtrucmuch), FOREIGN key (iddesc) REFERENCES resource (idresource) );
j'aimerai trouver les idresource qui ne sont pas liée a la table trucmuch. Bon evidement j'ai des dizaine de table qui sont liée a la table resource. donc je ne peux pas simplement faire une requete avec une jointure.
pour le moment je n'ai pas trouvé d'autre solution que pour chaque idresource - commencer une transaction. - faire un delete de l'idresource. - regarder si le delete a fonctionné. - faire un rollback.
voila ca me donne les resources non associée via une contrainte d'intégrité...
mais je cherche une methode peut etre un peu moins bourrine.
Merci a+ Etienne
Alcovia
Le 02/03/2010 10:28, WebShaker a écrit :
Attention, je ne cherche pas a supprimer les enregistrements. mais a connaitre les idresource qui pourraient l'être.
dans le but de contrôler leur contenu avant de les supprimer.
et bien remplace le DELETE par un SELECT
Le 02/03/2010 10:28, WebShaker a écrit :
Attention, je ne cherche pas a supprimer les enregistrements.
mais a connaitre les idresource qui pourraient l'être.
dans le but de contrôler leur contenu avant de les supprimer.
"Alcovia" a écrit dans le message de news: 4b8cdbaa$0$16379$
Le 02/03/2010 10:28, WebShaker a écrit :
Attention, je ne cherche pas a supprimer les enregistrements. mais a connaitre les idresource qui pourraient l'être.
dans le but de contrôler leur contenu avant de les supprimer.
et bien remplace le DELETE par un SELECT
ben non la je vais les avoir tous.
SQLpro
WebShaker a écrit :
"Alcovia" a écrit dans le message de news: 4b8cdbaa$0$16379$
Le 02/03/2010 10:28, WebShaker a écrit :
Attention, je ne cherche pas a supprimer les enregistrements. mais a connaitre les idresource qui pourraient l'être.
dans le but de contrôler leur contenu avant de les supprimer.
et bien remplace le DELETE par un SELECT
ben non la je vais les avoir tous.
SELECT * FROM trucmuch WHERE iddesc NOT IN (SELECT idresource FROM resource)
-- 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 Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies *********************** http://www.sqlspot.com *************************
WebShaker a écrit :
"Alcovia" <alcovia.denitz@hotmail.fr> a écrit dans le message de news:
4b8cdbaa$0$16379$426a74cc@news.free.fr...
Le 02/03/2010 10:28, WebShaker a écrit :
Attention, je ne cherche pas a supprimer les enregistrements.
mais a connaitre les idresource qui pourraient l'être.
dans le but de contrôler leur contenu avant de les supprimer.
et bien remplace le DELETE par un SELECT
ben non la je vais les avoir tous.
SELECT *
FROM trucmuch
WHERE iddesc NOT IN (SELECT idresource
FROM resource)
--
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
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
"Alcovia" a écrit dans le message de news: 4b8cdbaa$0$16379$
Le 02/03/2010 10:28, WebShaker a écrit :
Attention, je ne cherche pas a supprimer les enregistrements. mais a connaitre les idresource qui pourraient l'être.
dans le but de contrôler leur contenu avant de les supprimer.
et bien remplace le DELETE par un SELECT
ben non la je vais les avoir tous.
SELECT * FROM trucmuch WHERE iddesc NOT IN (SELECT idresource FROM resource)
-- 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 Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies *********************** http://www.sqlspot.com *************************
WebShaker
SELECT * FROM trucmuch WHERE iddesc NOT IN (SELECT idresource FROM resource)
Nan c'est toujours pas bon.
comme je l'ai dit. la table resource peut etre utilisée dans plein d'autre tables. elle contient les traductions de tous les champ text du projet.
on a donc trucmuch, mai aussi trucmuch1, trucmuch2, trucmuch3, ...
donc je pense que la solution n'est peut etre pas dans une requete SQL standard mais plutot dans quelques chose utilisant le structure propre a postgresql...
Etienne
SELECT *
FROM trucmuch
WHERE iddesc NOT IN (SELECT idresource
FROM resource)
Nan c'est toujours pas bon.
comme je l'ai dit.
la table resource peut etre utilisée dans plein d'autre tables. elle
contient les traductions de tous les champ text du projet.
on a donc trucmuch, mai aussi
trucmuch1,
trucmuch2,
trucmuch3,
...
donc je pense que la solution n'est peut etre pas dans une requete SQL
standard mais plutot dans quelques chose utilisant le structure propre a
postgresql...
SELECT * FROM trucmuch WHERE iddesc NOT IN (SELECT idresource FROM resource)
Nan c'est toujours pas bon.
comme je l'ai dit. la table resource peut etre utilisée dans plein d'autre tables. elle contient les traductions de tous les champ text du projet.
on a donc trucmuch, mai aussi trucmuch1, trucmuch2, trucmuch3, ...
donc je pense que la solution n'est peut etre pas dans une requete SQL standard mais plutot dans quelques chose utilisant le structure propre a postgresql...
Etienne
SQLpro
Alors soyez plus précis : donnez nous des exemples concrets avec 1) vos tables sous forme DDL (CREATE 2) un jeu d'essais sous forme INSERT 3) une idée du résultat
Sachez qu'aucune chose est impossible sous forme de requête SQL parce que SQL est un langage complet au sens de la machine de turing !
A +
WebShaker a écrit :
SELECT * FROM trucmuch WHERE iddesc NOT IN (SELECT idresource FROM resource)
Nan c'est toujours pas bon.
comme je l'ai dit. la table resource peut etre utilisée dans plein d'autre tables. elle contient les traductions de tous les champ text du projet.
on a donc trucmuch, mai aussi trucmuch1, trucmuch2, trucmuch3, ...
donc je pense que la solution n'est peut etre pas dans une requete SQL standard mais plutot dans quelques chose utilisant le structure propre a postgresql...
Etienne
-- 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 Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies *********************** http://www.sqlspot.com *************************
Alors soyez plus précis :
donnez nous des exemples concrets avec
1) vos tables sous forme DDL (CREATE
2) un jeu d'essais sous forme INSERT
3) une idée du résultat
Sachez qu'aucune chose est impossible sous forme de requête SQL parce
que SQL est un langage complet au sens de la machine de turing !
A +
WebShaker a écrit :
SELECT *
FROM trucmuch
WHERE iddesc NOT IN (SELECT idresource
FROM resource)
Nan c'est toujours pas bon.
comme je l'ai dit.
la table resource peut etre utilisée dans plein d'autre tables. elle
contient les traductions de tous les champ text du projet.
on a donc trucmuch, mai aussi
trucmuch1,
trucmuch2,
trucmuch3,
...
donc je pense que la solution n'est peut etre pas dans une requete SQL
standard mais plutot dans quelques chose utilisant le structure propre a
postgresql...
Etienne
--
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
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************
Alors soyez plus précis : donnez nous des exemples concrets avec 1) vos tables sous forme DDL (CREATE 2) un jeu d'essais sous forme INSERT 3) une idée du résultat
Sachez qu'aucune chose est impossible sous forme de requête SQL parce que SQL est un langage complet au sens de la machine de turing !
A +
WebShaker a écrit :
SELECT * FROM trucmuch WHERE iddesc NOT IN (SELECT idresource FROM resource)
Nan c'est toujours pas bon.
comme je l'ai dit. la table resource peut etre utilisée dans plein d'autre tables. elle contient les traductions de tous les champ text du projet.
on a donc trucmuch, mai aussi trucmuch1, trucmuch2, trucmuch3, ...
donc je pense que la solution n'est peut etre pas dans une requete SQL standard mais plutot dans quelques chose utilisant le structure propre a postgresql...
Etienne
-- 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 Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies *********************** http://www.sqlspot.com *************************
helios
SQLpro a écrit :
Alors soyez plus précis : donnez nous des exemples concrets avec 1) vos tables sous forme DDL (CREATE 2) un jeu d'essais sous forme INSERT 3) une idée du résultat
Sachez qu'aucune chose est impossible sous forme de requête SQL parce que SQL est un langage complet au sens de la machine de turing !
A +
il est même possible d'après un certain auteur de livre sur SQL de coder avec SQL toute les dates depuis Jesus Christ jusque nos jours sur 2 octets, c'est trés fort d'arriver à coder plus 733650 valeurs sur deux octet (2^16 ou 65536)mais SQL est miraculeux :-)
attention l'auteur va faire un procès en diffamation si on ne croit pas au miracle de SQL
SQLpro a écrit :
Alors soyez plus précis :
donnez nous des exemples concrets avec
1) vos tables sous forme DDL (CREATE
2) un jeu d'essais sous forme INSERT
3) une idée du résultat
Sachez qu'aucune chose est impossible sous forme de requête SQL parce
que SQL est un langage complet au sens de la machine de turing !
A +
il est même possible d'après un certain auteur de livre sur SQL de coder
avec SQL toute les dates depuis Jesus Christ jusque nos jours sur 2
octets, c'est trés fort d'arriver à coder plus 733650 valeurs sur deux
octet (2^16 ou 65536)mais SQL est miraculeux :-)
attention l'auteur va faire un procès en diffamation si on ne croit pas
au miracle de SQL
Alors soyez plus précis : donnez nous des exemples concrets avec 1) vos tables sous forme DDL (CREATE 2) un jeu d'essais sous forme INSERT 3) une idée du résultat
Sachez qu'aucune chose est impossible sous forme de requête SQL parce que SQL est un langage complet au sens de la machine de turing !
A +
il est même possible d'après un certain auteur de livre sur SQL de coder avec SQL toute les dates depuis Jesus Christ jusque nos jours sur 2 octets, c'est trés fort d'arriver à coder plus 733650 valeurs sur deux octet (2^16 ou 65536)mais SQL est miraculeux :-)
attention l'auteur va faire un procès en diffamation si on ne croit pas au miracle de SQL
Patrick Mevzek
Le Wed, 03 Mar 2010 08:58:53 +0100, WebShaker a écrit:
on a donc trucmuch, mai aussi trucmuch1, trucmuch2, trucmuch3, ...
SELECT * FROM resource WHERE idresource NOT IN ( SELECT iddesc FROM trucmuch UNION SELECT iddesc FROM trucmuch1 UNION SELECT iddesc FROM trucmuch2 )