|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Buzz The Inscription : novembre 2010 Messages : 5 ![]() |
Chers toutes et tous,
Je recherche le moyen de trouver les données non enregistrées dans une table par rapport à une autre. J'ai 2 tables, une enquete_info et enquete_detail. enquete_info comporte le champ incrémental enquete_id enquete_detail comporte le champ enquete_id, ce champ est rempli par des actions PHP avec les même données du champ enquete_id de la table enquete_info. Mais, la table enquete_detail ( contenant 2135 entrées ) ne contient pas le même nombre d'entrée que la table enquete_info ( contenant 2190 entrées, de 1 à 2190 ). Ceci est normal, je tiens à le préciser. Maintenant, je souhaite afficher UNIQUEMENT les 55 entrées manquantes de la table enquete_detail par rapport à la table enquete_info. Comment puis-je réaliser cet exercice ? Merci de votre aide J'ai trouvé un moyen : Code :
|
||
|
|
00
|
|
|
#2 | ||
![]() ![]() |
En principe ta requête est pourtant plus rapide que la jointure externe avec recherche des NULL :
Code :
Avec ton très faible nombre de lignes, la requête devrait donner sa réponse instantanément. Peut-être est-ce ton DISTINCT qui ralentit le processus ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 2 278 ![]() |
Bonjour,
tu peux faire un LEFT JOIN et récupérer uniquement les valeurs NULLES Code sql :
PS: mais je pense pas que ce sera plus rapide |
||
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() Buzz The Inscription : novembre 2010 Messages : 5 ![]() |
Merci à vous deux pour vos réponses.
@CinePhil En effet, je n'ai pas d'index pour la table enquete_detail. Maintenant, si je souhaite effectuer ceci ( ajouter un index ), dois-je lier à l'autre table ? J'ai souci de tout "bousiller" en créant cet index, car je n'ai jamais exécuté ce type d'insertion. Cette clé devrait être primaire ou unique puisque qu'il n'y a pas d'auto-incrément ( injection directe - autoalimentation - par un code PHP ) ? Merci encore |
|
|
00
|
|
|
#5 | ||
![]() ![]() |
Il ne s'agit pas d'ajouter une colonne mais d'indexer la colonne enquete_id de la table enquete_detail !
Si tu utilises phpMyAdmin, dans l'onglet "Structure" de la table, tu affiches "+ Détails" et tu vois les index existants. S'il n'y en a pas sur la colonne (improprement appelée "champ" par phpMyAdmin !) enquete_id, tu cliques sur "Exécuter" de la ligne "Créer un index" puis tu choisis la colonne à indexer. Si cette colonne doit aussi être clé primaire de la table, tu choisis le type d'index PRIMARY, si ce n'est pas la clé primaire mais que chaque valeur de enquete_id doit être unique dans la table, tu choisis le type d'index UNIQUE, sinon tu choisis simplement INDEX. Autre méthode avec une requête SQL : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#6 |
|
Invité de passage
![]() Buzz The Inscription : novembre 2010 Messages : 5 ![]() |
Merci CinePhil
Votre message est très clair. J'ai exécuté votre procédure et tout baigne. Je vous souhaite mes bons vœux |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com