table - 1 table

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : table - 1 table

par Augure » 02 sept. 2005, 16:47

Essayes ceci

Code : Tout sélectionner

DELETE FROM newsletter n FROM news_HS n WHERE n.id = n_HS.id
Syntaxe plus ancienne sans INNER JOIN qui devrait fonctionner je pense

par YoYo__ » 01 sept. 2005, 16:17

Pas bête!

Ca m'étonne quand même qu'on puisse pas faire ce genre de manip... :cry:

Vivement qu'online passe à la version supérieure!!

Merci encore pour tout!! :D

++

par ouckileou » 01 sept. 2005, 16:11

bon ben effectivement ça ne marche pas, bizarre je pensais que ça passerai

donc solution PHP :
1 - SELECT email FROM news_HS
2 - listage de ces emails que tu formates pour faire un IN
3 - DELETE FROM newsletter WHERE email IN ('email1', 'email2', 'emailN');

cela te fait toujours moins de requêtes que ta solution de départ ;)

par Invité » 01 sept. 2005, 15:56

Désolé le contenu est confidentiel mais voici la structure si ca peut t'aider :

Code : Tout sélectionner

# Structure de la table `news_HS` # CREATE TABLE news_HS ( ID int(5) NOT NULL auto_increment, email text NOT NULL, PRIMARY KEY (ID) ) TYPE=MyISAM; # -------------------------------------------------------- # # Structure de la table `newsletter` # CREATE TABLE newsletter ( id int(5) NOT NULL auto_increment, nom text NOT NULL, prenom text NOT NULL, email text NOT NULL, PRIMARY KEY (id) ) TYPE=MyISAM;
suffit de la remplir un peu et ca devrait te suffire pour le test!
:)

par ouckileou » 01 sept. 2005, 15:53

3.23.47-log !!!
ce n'est pas si étonnant MySQL 4 n'est pas si vieux (vieille ? :roll:)

donc ça exclue les sous-requêtes, par contre le DELETE avec jointure devrait marcher

si tes données ne sont pas confidentielles, je serais curieux d'avoir une petite partie de tes tables pour tester
ou alors la structure au moins

possible ?

par YoYo__ » 01 sept. 2005, 15:50

3.23.47-log !!!

:shock:

par ouckileou » 01 sept. 2005, 15:48

Code : Tout sélectionner

SELECT VERSION()
je crois...

par Invité » 01 sept. 2005, 15:46

C'est une très bonne question, je suis hébergé chez online mais je n'ai pas trouvé d'indications sur la version de mysql...

avec une commande peut-etre..

par ouckileou » 01 sept. 2005, 15:10

les sous-requêtes ne sont implémentées que depuis MySQL4.1, quelle est ta version ?

j'avoue que je ne comprends pas bien pourquoi la dernière requête que je t'ai donné ne fonctionne pas... :roll:

par YoYo__ » 01 sept. 2005, 15:00

J'ai une autre piste sinon avec des instructions imbriquées :

"DELETE FROM newsletter WHERE email in ('select email from news_HS');

mais :

ERROR: Apostrophe non fermé @ 0
STR: "
SQL: "DELETE FROM newsletter WHERE email in ('select email from news_HS');
requête SQL :

"DELETE FROM newsletter WHERE email in ('select email from news_HS');

MySQL a répondu:

You have an error in your SQL syntax near '"DELETE FROM newsletter WHERE email in ('select email from news_HS')' at line 1

par YoYo__ » 01 sept. 2005, 14:41

NAN c'est pas vrai!!!!!!!!

Je viens de perdre toutes mes tables!!!!!!!!!!!!!!!!!!!!!!!!

....

....

....

....

nan jrigole !!!! :wink:
Bon c'est pas drôle ok :(

Ca marche tjrs pas... :lol:

Unknown table 'news_HS' in where clause

alors qu'elle existe bien!!!!

:?:

par ouckileou » 01 sept. 2005, 14:32

bon en fait il semble que c'est la syntaxe de la jointure qui n'est supportée que depuis MySQL 4.0.2, avec JOIN

je n'avais jamais testé donc je ne savais pas

utilise alors cette forme là :

Code : Tout sélectionner

DELETE FROM newsletter WHERE newsletter.email = news_HS.email
mais bon, tu as une base de tests j'espère ?
on ne sait jamais :lol:

par YoYo__ » 01 sept. 2005, 14:25

Désolé....
Ca marche toujours pas...

You have an error in your SQL syntax near 'AS n INNER JOIN news_HS AS n_HS ON n.email = n_HS.email ' at line 1

aucune des requetes précédentes...
faute aux alias ??

par ouckileou » 01 sept. 2005, 14:19

apparament il y a des particularités avec les alias sur un DELETE...

essaye comme ça :

Code : Tout sélectionner

DELETE FROM newsletter AS n INNER JOIN news_HS AS n_HS ON n.email = n_HS.email
et si ça ne marche pas, alors utilise le nom complet des tables

Code : Tout sélectionner

DELETE FROM newsletter INNER JOIN news_HS ON newsletter .email = news_HS.email

par YoYo__ » 01 sept. 2005, 14:10

aie!
Ca me met ce message d'erreur :

You have an error in your SQL syntax near ' n INNER JOIN news_HS n_HS ON n.email = n_HS.email ' at line 1

et voila le script:
mysql_connect($dbhost,$dbuser,$dbpass) or die (mysql_error());
mysql_selectdb($dbname);

$update1="DELETE FROM newsletter n INNER JOIN news_HS n_HS ON  n.email = n_HS.email ";
$result1=mysql_query($update1) or die (mysql_error());