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 :

Select imbriqué SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Par défaut Select imbriqué SQL
    Bonjour,

    Je cherche à faire une comparaison de champ à partir de deux Select, concrètement ce que je veux faire avec la mauvaise syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT champ1
      FROM table1
     WHERE champ1 = (SELECT DISTINCT MID(description, 39, 10)
                       FROM table2
                      WHERE id = 5
                        AND description like '%toto%')
    J'ai une erreur subqueries return more than one row ce que je comprend mais je voudrais justement que ça me retourne un tableau avec les équivalences.

    J'utilise SQL de manière très basique donc je ne maitrise pas très bien les jointures et autre fonctionnalités avancées de SQL.

    Merci d'avance de votre aide

  2. #2
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Si tu veux en savoir plus sur le SQL en général, ces tutos sont très bien.

    Sinon ici tu essaye de comparer une valeur unique avec une liste de valeurs d'où l'erreur.

    Tu peux remplacer le = par IN.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT champ1 
    FROM table1 
    WHERE champ1 IN (SELECT DISTINCT  MID(description,39,10) FROM table2 WHERE id = 5 AND description like  '%toto%')
    Après il existe plusieurs manières de traiter le problème : jointure, EXISTS, ...

    P.S : pense à mettre les balises code pour ta requête

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Par défaut Requete
    Merci pour votre réponse rapide mais lorsque je lance cette requête dans phpmyadmin il ne fait rien, je n'ai pas d'erreur mais je n'ai pas de résultat non plus.

    Est-ce que cette requête est supposée poser problème ?

    Cordialement

  4. #4
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    Pouvez-vous nous donner la description de la table, un jeu de données et le résultat attendu ?

    Que renvoie la sous-requête ? Êtes-vous sur qu'elle renvoie au moins une valeur qui est comprise dans champ1 ?

    Je suppose que la requête postée n'est pas la requête telle quelle ? Si oui, alors seule la sous-requête suffit.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Par défaut requete
    J'ai essayé sur une table beaucoup plus petite au niveau nombre d'enregistrements et ça fonctionne.

    Sur ma table de prod ( environ 1500 enregistrements ) ça plante, du moins je n'ai aucun résultat et je ne peux plus rien faire.

    J'ai lu que IN et NOT IN n'était pas les plus efficaces niveau usage des ressources, vous disiez que c'était possible avec des jointures ou exists serait-il possible de m’expliquer comment faire que j'essaye pour voir si c'est mieux.

    Pour répondre à votre question je récupère un login avec le mid et je le compare à ma base login.

    Merci de votre aide

  6. #6
    Membre Expert Avatar de lola06
    Femme Profil pro
    Consultante en Business Intelligence
    Inscrit en
    Avril 2007
    Messages
    1 316
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultante en Business Intelligence
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 316
    Par défaut
    En fait si tu ne peux plus rien faire sur ta base c'est que ta requête tourne encore. essaye de la laisser un peu pour voir ce que ça donne.

    Sinon pour les jointures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT *
    FROM MaTable1
       JOIN (
          SELECT DISTINCT  MID(description,39,10) description
          FROM table2 
          WHERE id = 5 AND description LIKE  '%toto%'
       ) Tmp
       ON champ1 = description

Discussions similaires

  1. [SQL] Select imbriqué
    Par mcslash99 dans le forum PL/SQL
    Réponses: 10
    Dernier message: 03/07/2012, 09h39
  2. optimisation de requête sql avec select imbriquées
    Par yassine_le_boss dans le forum SQL
    Réponses: 6
    Dernier message: 02/11/2010, 22h12
  3. [SQL SERVER] SELECT IMBRIQUE -> Mettre une instruction.
    Par dacid dans le forum Langage SQL
    Réponses: 16
    Dernier message: 20/04/2009, 16h48
  4. [ SQL ] Faire un update avec un select imbriqué
    Par zozolh2 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/04/2005, 12h05
  5. Procédures stockées imbriquées SQL Server
    Par Mike69 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 01/10/2003, 10h31

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