Requête SQL avec LEFT JOIN :

Une moulinette de code qui s'est enrayée, une requête SQL qui ne passe pas ?
ph.gras
Addict
Addict
 
Messages: 71
Inscription: 23 Juin 2013, 13:39

Requête SQL avec LEFT JOIN :

Messagede ph.gras » 23 Juin 2013, 14:02

Comment puis-je adapter ces 3 requêtes SQL :
Code: Tout sélectionner
DELETE FROM BDD.wp_users WHERE wp_users.user_status = 2;
DELETE FROM BDD.wp_usermeta WHERE wp_usermeta.user_id = X;
DELETE FROM BDD.wp_bp_xprofile_data WHERE wp_bp_xprofile_data.user_id = X;

Pour n'en faire qu'une seule requête, dans le modèle de celle-ci :
Code: Tout sélectionner
DELETE a,b,c
FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = 'revision';

http://chezmat.fr/wordpress/optimisation/optimiser-les-revisions/

J'ai eu quelque 3.000 inscriptions (Pologne, Chine, etc.) ces cinquante derniers jours, et
je perds beaucoup de temps à supprimer les comptes, surtout dans les dernières tables.

Avatar de l’utilisateur
Galdon
Administrateur du site
Administrateur du site
 
Messages: 2188
Inscription: 06 Sep 2008, 22:05

Re: Requête SQL pour supprimer des comptes utilisateur wordpress

Messagede Galdon » 24 Juin 2013, 09:53

Essaie ça :

Code: Tout sélectionner
DELETE u, um, xp
FROM BDD.wp_users u
LEFT JOIN BDD.wp_usermeta um ON um.user_id = u.ID
LEFT JOIN BDD.wp_bp_xprofile_data xp ON xp.user_id = u.ID
WHERE u.user_status = 2
"Si tu veux me parler, envoie-moi un... FAX !" - George Abitbol

ph.gras
Addict
Addict
 
Messages: 71
Inscription: 23 Juin 2013, 13:39

Re: Requête SQL avec LEFT JOIN :

Messagede ph.gras » 24 Juin 2013, 16:36

Merci, je vais essayer dans la semaine, je reviendrais pour donner le résultat.
À vue de nez, ça a l'air cohérent, et ça va m'aider à comprendre la logique du
LEFT JOIN. Parce que là, je suis un peu à l'est join !

ph.gras
Addict
Addict
 
Messages: 71
Inscription: 23 Juin 2013, 13:39

Re: Requête SQL avec LEFT JOIN :

Messagede ph.gras » 27 Juin 2013, 22:27

J'ai donc nettoyé ma table après un début de semaine sous le casque lourd,
et cette requête SQL complexe fonctionne sur les 2 premières tables, mais
pas sur `wp_bp_xprofile_data `.

Avatar de l’utilisateur
Galdon
Administrateur du site
Administrateur du site
 
Messages: 2188
Inscription: 06 Sep 2008, 22:05

Re: Requête SQL avec LEFT JOIN :

Messagede Galdon » 29 Juin 2013, 16:03

Difficile de t'aider sans avoir la structure de la table wp_bp_xprofile_data (ça n'est pas une table wordpress, elle a été crée par un plugin).
"Si tu veux me parler, envoie-moi un... FAX !" - George Abitbol

ph.gras
Addict
Addict
 
Messages: 71
Inscription: 23 Juin 2013, 13:39

Re: Requête SQL avec LEFT JOIN :

Messagede ph.gras » 30 Juin 2013, 22:57

Oui, c'est une table BuddyPress :
Code: Tout sélectionner
   $sql[] = "CREATE TABLE {$bp->profile->table_name_groups} (
           id bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
           name varchar(150) NOT NULL,
           description mediumtext NOT NULL,
           can_delete tinyint(1) NOT NULL,
           KEY can_delete (can_delete)
   ) {$charset_collate};";

   $sql[] = "CREATE TABLE {$bp->profile->table_name_fields} (
           id bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
           group_id bigint(20) unsigned NOT NULL,
           parent_id bigint(20) unsigned NOT NULL,
           type varchar(150) NOT NULL,
           name varchar(150) NOT NULL,
           description longtext NOT NULL,
           is_required tinyint(1) NOT NULL DEFAULT '0',
           is_default_option tinyint(1) NOT NULL DEFAULT '0',
           field_order bigint(20) NOT NULL DEFAULT '0',
           option_order bigint(20) NOT NULL DEFAULT '0',
           order_by varchar(15) NOT NULL,
           can_delete tinyint(1) NOT NULL DEFAULT '1',
           KEY group_id (group_id),
           KEY parent_id (parent_id),
           KEY field_order (field_order),
           KEY can_delete (can_delete),
           KEY is_required (is_required)
   ) {$charset_collate};";

   $sql[] = "CREATE TABLE {$bp->profile->table_name_data} (
           id bigint(20) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
           field_id bigint(20) unsigned NOT NULL,
           user_id bigint(20) unsigned NOT NULL,
           value longtext NOT NULL,
           last_updated datetime NOT NULL,
           KEY field_id (field_id),
           KEY user_id (user_id)
   ) {$charset_collate};";
Je n'arrive plus à trouver le schéma complet des tables, ils ont tout supprimé, même mon compte…

Ça a vachement changé depuis un an. J'en suis resté à la version 1.2.9 !


Retourner vers PHP/MySQL

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités