Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/08/2011, 15h14   #1
Futur Membre du Club
 
Inscription : mai 2008
Messages : 32
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 32
Points : 16
Points : 16
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 :
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.
raphoun07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 15h35   #2
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
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)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 15h42   #3
Futur Membre du Club
 
Inscription : mai 2008
Messages : 32
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 32
Points : 16
Points : 16
J'ai simplifié l'exemple, mais je récupère bien des noms de colonnes.
Ce que je fais c'est plutôt :
Code :
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.
raphoun07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 16h01   #4
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
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)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 16h02   #5
Futur Membre du Club
 
Inscription : mai 2008
Messages : 32
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 32
Points : 16
Points : 16
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
raphoun07 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 16h38   #6
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 085
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 085
Points : 1 883
Points : 1 883
Bonjour,
Tu peux contourner le problème en remplaçant la sous-requête par une jointure:
Code SQL :
1
2
3
4
5
 
SELECT res1, res2, res3
FROM table1
INNER JOIN TABLE 2 ON table1.colonne1 = table2.colonne2
WHERE conditions_autres

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 16h48   #7
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
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 :
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)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 17h05   #8
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 085
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 085
Points : 1 883
Points : 1 883
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.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h25.


 
 
 
 
Partenaires

Hébergement Web