Argh encore une requête SQL tordue x_o

  • Auteur de la discussion Auteur de la discussion mowmow
  • Date de début Date de début
WRInaute impliqué
Salut tout le monde,

Alors me revoilà avec une requête SQL assez tordue, en fait je voudrais tout simplement détruire les enregistrements de game_entreprises qui ont un "ownerid" qui ne figure parmi aucun "id" de la table membre. Heu, j'ai été assez clair ou pas ? :lol:

J'ai fait ca :

DELETE FROM game_entreprises USING game_entreprises, membres WHERE game_entreprises.model != "1" AND game_entreprises.ownerid !=0 AND membres.id != game_entreprises.ownerid

Donc y'a aussi le fait que "model" doit être différent de 1 et "ownerid" != 0

Là il me retourne des enregistrements qui ont ownerid != id.membres donc pas ce que je veux :(

Merci d'avance
 
WRInaute occasionnel
Une des requêtes les plus simples d'un point de vue syntaxe serait
Code:
DELETE FROM game_entreprises WHERE ownerid NOT IN (SELECT ownerid FROM membres)
 
WRInaute impliqué
Je connais pas cette syntaxe, mais à vue de nez, elle correspond tout à fait à la demande... ;-) Et moi je veins d'apprendre quelque chose ! :-)
 
WRInaute occasionnel
Attention par contre si c'est pour MySQL : ca fait très peu de temps que les sous requetes sont supportées sur ce SGBD : si je ne me trompe pas, ca fonctionne uniquement à partir de la version 4.1. Sur les SGBD plus évolués, pas de problème.
 
WRInaute impliqué
iconso a dit:
Attention par contre si c'est pour MySQL : ca fait très peu de temps que les sous requetes sont supportées sur ce SGBD : si je ne me trompe pas, ca fonctionne uniquement à partir de la version 4.1. Sur les SGBD plus évolués, pas de problème.

Ca marche pas pour moi :s
 
WRInaute discret
mowmow a dit:
Ca marche pas pour moi :s

Je crois que dans ce cas là, tu es obligé de faire un script qui dans un premier temps recherche les données à supprimer et dans un deuxième temps qui créé les requêtes de suppression...
 
WRInaute occasionnel
mowmow a dit:
Ca marche pas pour moi :s
Dans ce cas tu dois pouvoir le faire avec une autre forme de requête :
Code:
DELETE game_entreprises
FROM game_entreprises LEFT JOIN membres ON game_entreprises.ownerid = membres.ownerid 
WHERE membres.ownerid IS NULL
AND game_entreprises.ownerid !=0
 
WRInaute passionné
mowmow a dit:
Salut tout le monde,

Alors me revoilà avec une requête SQL assez tordue

:lol: :lol: :lol:
Pas le temps de m'y pencher aujourd'hui, désolé :D
N'hésite pas à poster la structure de tes tables ( c très facile d'exporter la structure avec phpmyadmin ), et c'est plus facile pour te donner une réponse rapide.

Content de voir, que tu as réglé ton pb de rank pour tes user.
 
Discussions similaires
Haut