begin process at 2012 05 31 09:28:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

AU SECOURS !!!

 > 

Sélectionner les lignes différentes entre deux tables


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Sélectionner les lignes différentes entre deux tables

lundi 23 juin 2003 à 16:49:08 | Sélectionner les lignes différentes entre deux tables

Mikemadest

Bonjour,

J'ai cherché sans trouver de réponse à mon problème,
ce qui m'amène à vous poser cette question !
D'avance je m'excuse si j'ai raté la solution quelque part...

Pour commencer:
je developpe en php/MySQL.
J'ai deux tables qui contiennent des données sur des articles (référence, taille, etc.).

- la première table contient les anciennes données.
- la deuxième contient les nouvelles.

Je veux créer une requête qui va prendre les données qui diffèrent entre les deux tables.
Le but est de sélectionner les articles qui ne seront plus dans la nouvelle table.

Au début j'ai cherché à faire un :
SELECT ancienne.* FROM nouvelle, ancienne WHERE nouvelle.id<>ancienne.id

Et puis j'ai réfléchit :
il me faut toutes les références de la vielle table qui ne sont pas dans la nouvelle.

J'ai cherché, et finalement j'ai opté pour cette solution:
il suffit de supprimer les références de l'ancienne table qui sont présentes dans la nouvelle.
Ainsi les références qui restent correspondent à ce que je cherche !

Après encore moultes recherches, j'ai fini par avoir ceci:
DELETE FROM ancienne USING nouvelle,ancienne WHERE nouvelle.id=ancienne.id

Dans la doc MySQL, il y a une autre variation :
DELETE ancienne FROM nouvelle,ancienne WHERE nouvelle.id=ancienne.id

Mais ça ne marche pas !
Que ce soit le USING ou DELETE FROM avec deux tables,
il me renvoit toujours la même erreur:
"something is wrong in your syntax ..."
soit en indiquant le using, soit la virgule...

Hors normalement ça marche avec les version récentes de MySQL...
Peut-être que le fait d'utiliser easyphp 1.6 pose un problème ?

J'ai loupé un truc ?

Merci d'avance,
MikeMadest

PS:
je viens de voir que sur easyphp 1.6 c'est Mysql 3.23,
ce qui explique que ces requetes soient rejetée...
Y'a t'il une autre solution à mon problème ?


jeudi 31 mars 2005 à 15:08:57 | Re : Sélectionner les lignes différentes entre deux tables

Mikemadest

Bonjour,

Cela fait bien longtemps que j'ai posé cette question. Maintenant je connais bien mieux le sql, et je connais la réponse... Alors comme je retombe par hasard sur ma question, je vais y répondre !

Je ne sais pas si personne n'y a répondu parce qu'elle était simple... ou si elle était passé inaperçu. Je pense que je n'avais pas trouvé parce que  j'avais mal posé mon problème, tout simplement (j'avais pourtant bien cherché).

Je ne connaissais pas bien les requêtes jointes à l'époque, et c'est pourtant là que se trouve la solution à mon problème.

Soit deux tables, "nouvelle" et "ancienne". Partant des données de mon problème, elles ont les même champs, et ce qui m'intéresse ce sont les données de la nouvelle qui ne sont pas dans l'ancienne. Je prendrai comme champ de liaison un hypothétique champ de référence "id" :

SELECT nouvelle.* FROM nouvelle LEFT JOIN ancienne ON nouvelle.id = ancienne.id
WHERE ancienne.id IS NULL

Je traduis cette requête en Français :
Sélectionner tous les champs de la table "nouvelle",
Utiliser la table ancienne qui est lié à nouvelle par l'égalité des champs "id"
Et ne prendre que les lignes de la table nouvelle correspondant à une ligne vide de la table ancienne.

Voilà :)
Je ne sais pas si cela servira à quelqu'un mais bon ...


MikeMadest


Cette discussion est classée dans : table, mysql, id, ancienne, tables


Répondre à ce message

Sujets en rapport avec ce message

problème de mise à jour de base de données [ par rildspael ] Ben en fait maintenant j'ai refait ce code, je me suis concentré, j'ai tout analysé mais rien ne marche encore et je ne comprends pas : le voici :Donc Bloquage de tables (LOCK) [ par STef77 ] Bonsoir,J'ai une question sur MySQL (j'utilise la version 3.23.49-log sur ma debian (woody)).Etant donné que MySQL ne supporte pas les clés étrangères Afficher une ligne d'une table mysql [ par Alferox ] Bonjours,bon bin une question de base toute con.Je voudrais afficher uniquement la ligne qui port l'id 2 d'une table. Il n'y a pas plus simple que de MySQL : changement de l'ID dans une table [ par DJDX ] Bonjour groupe!Ma question peut parraître simple, mais je n'ai aucune idée comment résoudre mon "problême".si je tape ce codemysql_select_db($base, relation entre 2 tables [ par rastagnol ] slt !!!voila G un pb pour mettre 2 tables en relations ... je ne sais pas trop comment m'y prendre. G une table commandes avec un champ client_id et u Affichage de doublons dans une recherche sur deux tables [ par rafou77 ] Bonjour,c'est encore moi le newbizzzVoilà mon probleme, je fais une recherche sur deux tables (credits (id,nom,prenom,ect..) ) et (credits5 ( id,id_cl Probleme d'affichage dans une liste déroulante [ par JohnInsane ] Bonjour à tous, Voilà j'ai un problème, j'ai fais un script où l'on choisit une catégorie dans une liste déroulante qui est dans la table cat où j'a MySQL_INSERT_ID mais pour le delete ???? [ par ripoux ] Hello,Peut-être l'aurez-vous compris dans le titre...Je cherche un moyen pour faire un delete de plusieur table relié entre elle.Pour un Insert, il ex Probleme recuperation de l'id d'une table pour insérer dans une autre par la methode update [ par Alpha911 ] Bonjour,Je test plusieurs methodes pour pouvoir prendre l'id d'une table qui et la recopier dans une autre table j'ai 2 tables UTILISATEUR et une autr Comment savoir le dernier ID (MySQL) [ par ImmortalPC ] Salut, j'ai un super problème. j'ai une table comme cela : CREATE TABLE `test` ( `ID` int(11) NOT NULL auto_increment, `sujet` varchar(255) NOT NULL


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales