IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

[mysql 3.23] erreur avec NOT IN


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de helje
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2005
    Messages : 61
    Par défaut [mysql 3.23] erreur avec NOT IN
    Bonjour

    MySQL version 3.23.58

    2 tables :
    - tbl_news (id_news:int, titre:varchar)
    - tbl_article_news (article:int, news: int)

    Ce que je veux faire est simple : je veux supprimer de tbl_news les
    enregistrements dont l'id_news n'est pas parmi les news de l'autre table.

    D'où :
    DELETE FROM `tbl_news` WHERE `id_news` NOT IN (
    SELECT `news` FROM `tbl_article_news`)

    Résultat :
    #1064 - You have an error in your SQL syntax near 'SELECT `news` FROM
    `tbl_article_news`)' at line 1

    Je pense que cette version de mysql ne supporte pas ce genre de requête. Quelle alternative je peux utiliser ?
    NB : Je ne peux pas changer la version de mysql sur ce serveur.

  2. #2
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    effectivement, MySQL 3 ne supporte pas les subqueries.
    Comme seule alternative à laquelle je pense, c'est de remplacer ta subquery par la liste des ID directement, perso je ne vois pas d'autre solution...

  3. #3
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Je n'ai pas de MySQL 3 sous la main pour tester mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE `tbl_news`
    FROM `tbl_news` LEFT JOIN `tbl_article_news` ON `tbl_news`.`id_news`=`tbl_article_news`.`news`
    WHERE `tbl_article_news`.myPK IS NULL;
    devrait le faire... à tester avec soin, c'est dangereux ces bestioles

  4. #4
    Membre actif Avatar de helje
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2005
    Messages : 61
    Par défaut
    Ca ne marche pas non plus

    #1064 - You have an error in your SQL syntax near 'tbl_news`
    FROM `tbl_news` LEFT JOIN `tbl_article_news` ON `tbl_news`.`id_n' at line 1

  5. #5
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    La doc mélange le 3 et le 4 donc difficile de savoir ce qui doit marcher ou non

    Dans le genre on va tenter quand même il y aurait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE FROM N
    USING `tbl_news` N LEFT JOIN `tbl_article_news` A ON N.`id_news`=A.`news`
    WHERE A.myPK IS NULL;
    Sinon j'ai peur que ce soit la solution à bkill ou alors s'inspirer de :
    Citation Envoyé par http://dev.mysql.com/doc/refman/4.1/en/delete.html
    (In addition to Chris Rywalts explanation which did not work on my computer (MYSQL 4.0.12-nt))
    If you want to delete multiple columns at once matching
    a more complex select clause use the follwing syntax:

    CREATE TEMPORARY TABLE tmptable
    SELECT t1.* FROM table1 as t1
    LEFT JOIN table2 as t2 ON t2.id = t1.id
    WHERE t2.id is NULL;

    DELETE FROM table1 USING tmptable, table1
    WHERE table.id = tmptable.id;

    This statement will delete all rows that exist in table1 but
    do not have a corresponding entry in table2
    (à supposer que ce soit v3 friendly )

  6. #6
    Membre actif Avatar de helje
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2005
    Messages : 61
    Par défaut
    Toujours pas

    #1064 - You have an error in your SQL syntax near 'USING `tbl_news` N LEFT JOIN `tbl_article_news` A ON N.`id_news`=A.`news`
    WHER' at line 2

Discussions similaires

  1. Erreur avec NOT EXISTS : expression absente
    Par Battosaiii dans le forum SQL
    Réponses: 4
    Dernier message: 29/06/2011, 16h18
  2. message d'erreur avec mysql
    Par ulysse031 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 07/02/2007, 19h23
  3. Erreur "406 not acceptable" avec idhttp
    Par sfpx dans le forum Delphi
    Réponses: 6
    Dernier message: 22/10/2006, 03h59
  4. [MySQL] erreur avec sous-requête
    Par Piou2fois dans le forum Langage SQL
    Réponses: 4
    Dernier message: 04/02/2006, 13h44
  5. [PHPMyAdmin]Problème avec "Not Null" dans mysql 5
    Par Ryan Sheckler dans le forum Requêtes
    Réponses: 4
    Dernier message: 15/12/2005, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo