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 :

Ingres - limite dans une sous-requête


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Points : 28
    Points
    28
    Par défaut Ingres - limite dans une sous-requête
    Bonjour,

    J'aimerais savoir si quelqu'un aurait une idée de la limite du nombre de valeurs acceptées par Ingres dans une sous-requête.
    J'ai une requête Ingres du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select * from table1
    where colonne1 in (select colonne2 from table2)
    J'ai une erreur qui me dit que ma sous-requête ramène trop de données (il y a 111 lignes);
    (l'erreur est via BO donc pas parlante en terme Ingres, et les valeurs de la sous requête viennent d'une base oracle, donc je ne peux pas faire passer la requête directement sous Ingres; aucun souci en utilisant la même sous-requête dans une requête prinipale en Oracle).

    Je n'ai rien trouvé à ce sujet pour l'instant.

    D'avance merci.

  2. #2
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    C'est peut etre votre "*" qui pose probleme non ?
    Avez vous essayé de nommer les colonnes demandées ?
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Points : 28
    Points
    28
    Par défaut
    J'ai simplifié l'exemple, mais je récupère bien des noms de colonnes.
    Ce que je fais c'est plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select res1, res2, res3 from table1
    where colonne1 in (select colonne2 from table2)
    and conditions_autres
    Je n'ai pas d'erreur quand j'enlève la sous-requête. Ca vient de là a priori.

  4. #4
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Avez vous essayé d'executer la requete avec un client SQL INGRES ?
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Points : 28
    Points
    28
    Par défaut [Résolu]
    J'ai essayé par un autre côté dans BO... et ça ne vient pas d'Ingres mais de BO, désolé.


    normalement il limite à 1000, là c'est 99

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Tu peux contourner le problème en remplaçant la sous-requête par une jointure:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT res1, res2, res3
    FROM table1
    inner join table 2 on table1.colonne1 = table2.colonne2
    where conditions_autres

    Tatayo.

  7. #7
    Membre expérimenté Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Points : 1 738
    Points
    1 738
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    Tu peux contourner le problème en remplaçant la sous-requête par une jointure:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT res1, res2, res3
    FROM table1
    inner join table 2 on table1.colonne1 = table2.colonne2
    where conditions_autres

    Tatayo.

    Cette requete n'est pas iso fonctionnelle a celle de depart.
    En effet, si la table table2 possede plusieurs tuples avec colonne2 identique, alors la jointure renverra autant de lignes que de doublons. Ce qui n'est pas le cas du IN

    Par contre vous pouvez utiliser un EXISTS

    Bon courage
    Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Citation Envoyé par Yanika_bzh Voir le message
    Cette requete n'est pas iso fonctionnelle a celle de depart.
    En effet, si la table table2 possede plusieurs tuples avec colonne2 identique, alors la jointure renverra autant de lignes que de doublons. Ce qui n'est pas le cas du IN.
    Effectivement, je voulais supprimer complètement la sous-requête, pour ne pas retomber sur une autre limitation, et j'ai oublié le DISTINCT ...


    Tatayo.

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

Discussions similaires

  1. impossible d'utiliser LIMIT 1 dans une sous-requête
    Par Christophe Charron dans le forum Requêtes
    Réponses: 13
    Dernier message: 19/12/2009, 22h42
  2. inserer un critere dans une sous requête
    Par Myogtha dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/02/2008, 16h53
  3. Passer un paramètre dans une sous-requête
    Par Lucier dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/10/2007, 10h07
  4. Contourner le non-support de limit dans une sous-requête
    Par Christophe Charron dans le forum Requêtes
    Réponses: 7
    Dernier message: 04/09/2007, 10h45
  5. Ramener plusieurs champs dans une sous requête...
    Par David.V dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/01/2005, 07h54

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