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 :

syntaxe comparaison WHERE


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut syntaxe comparaison WHERE
    je cherche la syntaxe pour comparer les enregsitrement de 2 attributs saut que les enregistrements de accession_number.accession_number ont en plus à la fin ".1" ou ".2" ou ".3" ....

    ça doit ressembler à cela :
    WHERE accession_number.accession_number LIKE affy_temp.accession_number ...
    affy_temp.accession_number --> attribut accession number de la table affy_temp

    comment dire que les enregistrements d'un attribut doivent être comparé en ajoutant "point + un chiffre" à l'enregistrement ??

    je remercie les personnes pouvant m'aider
    -------------------
    Ickou

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 903
    Points : 6 027
    Points
    6 027
    Par défaut
    Peut-être avec la fonction CONCAT....

    C'est là http://dev.mysql.com/doc/mysql/fr/string-functions.html
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    est ce que la syntaxe est bonne :

    WHERE accession_number.accession_number LIKE CONCAT (affy_temp.accession_number, '.%')

    merci
    -------------------
    Ickou

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    tu pourrais nous donner 2-3 exemples d'enregistrements que tu veux sélectionner ?

  5. #5
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    accession_number.accession_number (6 millions d'enregistrement):
    AA865511.1
    AA864272.1
    AA962396.1

    affy_temp.accession_number :
    AB032974
    AB032974

    au départ j'ai essayé ça :
    REPLACE INTO affymetrix (affy, gene_id)
    SELECT affy_temp.affy , accession_number.gene_id
    FROM affy_temp, accession_number
    WHERE affy_temp.accession_number = accession_number.accession_number

    en fait, dans une table les accession_number finissent par "point+ un chiffre" mais il ne faut pas en tenir compte.
    deplus il ne faut pas que lorqu'on recherche AB12345 il sorte AB123456.1 mais seulement AB12345.1.

    j'espère que j'ai été clair sinon n'hésite pas à me poser des questions.

    merci
    -------------------
    Ickou

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    est ce que le "accession_number" à toujours 8 caractères ?
    on va dire que oui pour le test suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM affy_temp AS At
    INNER JOIN accession_number AS An 
    ON SUBSTRING(An.accession_number, 1, 8) = At.accession_number
    AND SUBSTRING(An.accession_number, 9, 1) =  '.'
    AND SUBSTRING(An.accession_number, 10, 1) BETWEEN '0' AND '9'
    AND LENGTH(An.accession_number) = 10
    histoire de simplifier la requête est ce que la table "accession_number" peut contenir des chaines de plus de 10 caractères ? (si non tu peux ôter la dernière ligne)
    des chaine qui se termine par autre qu'un chiffre après le point ? (si non tu peux ôter l'avant-dernière ligne)

  7. #7
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    merci beaucoup ! ta requête est pas mal !!

    j'ai aussi des accessions à 6 caractères, j'utilise 2 requêtes dont la suivante en plus ou je peux faire une seule requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM affy_temp AS At
    INNER JOIN accession_number AS An ON SUBSTRING( An.accession_number, 1, 6 ) = At.accession_number
    AND SUBSTRING( An.accession_number, 7, 1 ) = '.'
    AND SUBSTRING( An.accession_number, 8, 1 )
    BETWEEN '0'
    AND '9'
    merci encore
    -------------------
    Ickou

  8. #8
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    déjà j'ai rajouté des balises "code" dans ton message pour qu'il soit plus lisible

    pour ta question étant donné que ta table "accession_number" est assez grande il vaut mieux utiliser 2 requêtes pour soulager le serveur
    mais si tu tiens à utiliser une seule requête tu peux essayer ça (pas testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM affy_temp AS At
    INNER JOIN accession_number AS An
    ON SUBSTRING(An.accession_number, 1, LENGTH(At.accession_number)) = At.accession_number
    AND SUBSTRING(An.accession_number, LENGTH(At.accession_number) + 1, 1) =  '.'
    AND SUBSTRING(An.accession_number, LENGTH(At.accession_number) + 2, 1) BETWEEN '0' AND '9'
    AND LENGTH(An.accession_number) = LENGTH(At.accession_number) + 2
    à vue d'oeil je pense que cette requête peut consommer jusqu'à 10 fois plus de ressources que les autres requêtes (et donc elle va mettre plus de temps à s'exécuter)

  9. #9
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    merci t'es un boss
    -------------------
    Ickou

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] syntaxe clause where is null
    Par Shivas dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 28/09/2009, 10h30
  2. [MySQL] Erreur sur une syntaxe (REPLACE WHERE)
    Par Hew dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/02/2009, 21h01
  3. erreur de syntaxe comparaison 2 variables
    Par team_requete dans le forum Débuter
    Réponses: 6
    Dernier message: 30/01/2009, 10h07
  4. Syntaxe dans Where (docmd.openform)
    Par fredpeca dans le forum Access
    Réponses: 24
    Dernier message: 09/01/2007, 13h44
  5. [Conception] Erreur syntax, comparaison de variables
    Par vincedjs dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 16/02/2006, 16h10

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