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

Langage SQL Discussion :

[MySQL 4.1.12][Debutant] Select syntax error


Sujet :

Langage SQL

  1. #1
    Membre chevronné
    Avatar de Cian
    Inscrit en
    Août 2002
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 181
    Par défaut [MySQL 4.1.12][Debutant] Select syntax error
    Bonjour,
    j'ai entre autre deux tables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    CREATE TABLE IF NOT EXISTS `mantis_bug_table` (
      `id` int(7) unsigned NOT NULL auto_increment,
      <b>`project_id` int(7) unsigned NOT NULL default '0',</b>
      `reporter_id` int(7) unsigned NOT NULL default '0',
      `handler_id` int(7) unsigned NOT NULL default '0',
      `duplicate_id` int(7) unsigned NOT NULL default '0',
      `priority` int(2) NOT NULL default '30',
      `severity` int(2) NOT NULL default '50',
      `reproducibility` int(2) NOT NULL default '10',
      `status` int(2) NOT NULL default '10',
      `resolution` int(2) NOT NULL default '10',
      `projection` int(2) NOT NULL default '10',
      `category` varchar(64) NOT NULL default '',
      `date_submitted` datetime NOT NULL default '1970-01-01 00:00:01',
      `last_updated` datetime NOT NULL default '1970-01-01 00:00:01',
      `eta` int(2) NOT NULL default '10',
      `bug_text_id` int(7) unsigned NOT NULL default '0',
      `os` varchar(32) NOT NULL default '',
      `os_build` varchar(32) NOT NULL default '',
      `platform` varchar(32) NOT NULL default '',
      `version` varchar(64) NOT NULL default '',
      `fixed_in_version` varchar(64) NOT NULL default '',
      `build` varchar(32) NOT NULL default '',
      `profile_id` int(7) unsigned NOT NULL default '0',
      `view_state` int(2) NOT NULL default '10',
      `summary` varchar(128) NOT NULL default '',
      `sponsorship_total` int(7) NOT NULL default '0',
      `sticky` tinyint(1) NOT NULL default '0',
      PRIMARY KEY  (`id`),
      KEY `sponsorship_total` (`sponsorship_total`),
      KEY `fixed_in_version` (`fixed_in_version`),
      KEY `status` (`status`),
      KEY `project_id` (`project_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=1368 ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    DROP TABLE IF EXISTS `mantis_project_table`;
    CREATE TABLE IF NOT EXISTS `mantis_project_table` (
      `id` int(7) unsigned NOT NULL auto_increment,
      `name` varchar(128) NOT NULL default '',
      `status` int(2) NOT NULL default '10',
      `enabled` int(1) NOT NULL default '1',
      `view_state` int(2) NOT NULL default '10',
      `access_min` int(2) NOT NULL default '10',
      `file_path` varchar(250) NOT NULL default '',
      `description` text NOT NULL,
      PRIMARY KEY  (`id`),
      UNIQUE KEY `name` (`name`),
      KEY `id` (`id`),
      KEY `view_state` (`view_state`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

    C'est deux tables sont donc liées par la clé "project_id" qui relie un bug à un projet. (Vous reconnaitrez peut-être la structure du logiciel mantis)

    J'essaie de récuperer le nombre de bugs existants pour un ou plusieurs projet sur une période de temps.

    J'avais donc imaginé la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT count(*) from mantis_bug_table 
    WHERE date_submitted>="2006-12-01" 
    AND date_submitted<="2006-12-31" 
    AND project_id = 
    
    'SELECT id FROM mantis_project_table WHERE name="TEST" OR name="GENERAL"'
    Mais çà ne marche pôa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TEST" OR name="GENERAL""' at line 1

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Par défaut
    1/ pourquoi avez-vous encadré cette partie de votre requête de 2 simples quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT id FROM mantis_project_table WHERE name="TEST" OR name="GENERAL"'
    2/ est-ce que cette requête peut ramener plus d'une ligne ?
    Si c'est le cas il vous faut remplacer le "=" précédant cette requête par IN ou EXISTS (cf la structure d'une sous-requête corrélée avec EXISTS)
    3/ si vous utilisez une sous-requête, assurez-vous que votre version de MySQL est supérieure à la 4.1

  3. #3
    Membre chevronné
    Avatar de Cian
    Inscrit en
    Août 2002
    Messages
    181
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 181
    Par défaut
    Citation Envoyé par Magnus
    1/ pourquoi avez-vous encadré cette partie de votre requête de 2 simples quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT id FROM mantis_project_table WHERE name="TEST" OR name="GENERAL"'
    Je pensais que c'était nécessaire. Je les enlève donc.

    Citation Envoyé par Magnus
    2/ est-ce que cette requête peut ramener plus d'une ligne ?
    Si c'est le cas il vous faut remplacer le "=" précédant cette requête par IN ou EXISTS (cf la structure d'une sous-requête corrélée avec EXISTS)
    Oui je peux avoir plusieurs lignes. Je regarde le EXITS

    Citation Envoyé par Magnus
    3/ si vous utilisez une sous-requête, assurez-vous que votre version de MySQL est supérieure à la 4.1
    [/QUOTE]
    je suis en MySQL 4.1.12-max sur le serveur localhost

  4. #4
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Par défaut
    Est-ce que ce qui suit fonctionne ?
    j'ai adapté la requête fournie, remplacé mes guillemets par des quotes simples et le "=" par un IN pour la sous-requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT count(*) from mantis_bug_table 
     WHERE date_submitted >= '2006-12-01' 
       AND date_submitted <= '2006-12-31' 
       AND project_id IN (SELECT id FROM mantis_project_table 
                           WHERE name='TEST' OR name='GENERAL')
    Une fonction de transtypage de chaîne en date ne serait pas superflue à mon sens, afin que les tests sur les dates ne renvoie pas d'erreurs
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/07/2012, 00h26
  2. [MySQL] [MySQL] SQLSTATE[42000]: Syntax error or access violation: 1064
    Par Domotik35 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/07/2011, 16h42
  3. Mysql syntax error
    Par toniobuteau dans le forum Débuter
    Réponses: 3
    Dernier message: 17/06/2011, 10h29
  4. [Debutant] Parse error: syntax error, unexpected T_VARIABLE in
    Par yur.miku dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 06/05/2010, 15h07
  5. Zend Db Select Where et backtick = syntax error
    Par manuscle dans le forum Zend_Db
    Réponses: 1
    Dernier message: 04/03/2010, 14h04

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