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

 Firebird Discussion :

Comment obtenir une intersection de deux tables avec flamerobine


Sujet :

Firebird

  1. #1
    Candidat au Club
    Homme Profil pro
    Bachelier en informatique de gestion
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bachelier en informatique de gestion

    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Comment obtenir une intersection de deux tables avec flamerobine
    Bonjour,

    Petite question j'ai deux tables h1 et h2 et j'aimerais obtenir l'intersection des deux tables, savez-vous comment faire car INTERSECT n'existe pas pour flamerobine

    Merci pour les réponses

    Thierry

  2. #2
    Candidat au Club
    Homme Profil pro
    Bachelier en informatique de gestion
    Inscrit en
    Juillet 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Bachelier en informatique de gestion

    Informations forums :
    Inscription : Juillet 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai trouvé ...pour remplacer la fonction sql INTERSECT qui n'existe pas avec flamrobin....

    pour table H1 et table H2 avec même structure :

    NUMERO integer

    La réponse est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM H1
    WHERE H1.NUMERO IN (SELECT NUMERO FROM H2);
    CQFD


  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    Pour information, ce n'est pas Flamerobin qui ne possède pas INTERSECT, mais la base de données que tu utilises. Tu utiliserais IBExpert, il te faudrait rédiger ton code comme avec Flamerobin.

    A ma connaissance, la plupart des bases de données n'ont pas INTERSECT implanté. Il en est d'ailleurs ainsi pour Firebird et Interbase.

    A+

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 950
    Points
    40 950
    Billets dans le blog
    62
    Par défaut
    Bonjour ,

    Une intersection (si mes lectures sont correctes) c'est l'ensemble des lignes de deux tables où toutes les colonnes sont égales

    la réponse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM H1
    WHERE H1.NUMERO IN (SELECT NUMERO FROM H2);
    est donc inexacte

    Dans ce cas il s'agit d'un jointure (interne) je suggère plutôt la syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT H1.* FROM H1 INNER JOIN H2 ON H1.NUMERO=H2.NUMERO
    ceci étant , je ne suis pas trop pour le H1.* , il vaut mieux indiquer les différentes colonnes que l'on veut récupérer

    Quelle est la plus rapide des 2 requêtes ci-dessus ?

    une vrai intersection avec Firebird serait plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT H1.NUMERO,H1.COL2,H1.COL3,.... FROM H1 INNER JOIN H2 ON
    H1.NUMERO=H2.NUMERO AND H1.COL2=H2.COL2 AND H1.COL3=H2.COL3 ....
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    566
    Détails du profil
    Informations personnelles :
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2009
    Messages : 566
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    @SergioMaster
    Une intersection (si mes lectures sont correctes) c'est l'ensemble des lignes de deux tables où toutes les colonnes sont égales

    la réponse
    Code :
    Sélectionner tout - Visualiser dans une fenêtre à part
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM H1
    WHERE H1.NUMERO IN (SELECT NUMERO FROM H2);
    est donc inexacte
    Je suis tout à fait d'accord avec toi. Il faut dire que j'avais lu en diagonal le 2ème message de @thierry maesen.

    Tu réponds parfaitement à la question dans la 2ème partie de ton message.

    Notre ami @thierry maesen devrait consulter le tutorial de SQLPro qui traite des ensembles en SQL http://sqlpro.developpez.com/cours/s...embles/#L3.5.3

    A+

Discussions similaires

  1. [XL-2007] Comment créer une dépendance entre deux listes avec des données issus d'un tableau?
    Par efesdark dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2011, 16h22
  2. Réponses: 1
    Dernier message: 11/06/2009, 23h39
  3. Comment établir une relation entre deux tables
    Par Monta^^ dans le forum Hibernate
    Réponses: 15
    Dernier message: 30/04/2009, 19h54
  4. Comment créer une contrainte entre deux tables ?
    Par Invité dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/04/2009, 16h53
  5. Réponses: 3
    Dernier message: 10/11/2007, 18h09

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