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

SQL Oracle Discussion :

Jointure de 2 tables dans un bulk collect


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Par défaut Jointure de 2 tables dans un bulk collect
    Bonsoir à tous,

    ayant cherché pendant un certain temps sur internet, je fais appel à vous !

    Sachant que j'ai une table client et une table adresse et que j'ai défini un type de table pour mon bulk collect par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TYPE MA_TABLE IS TABLE OF CLIENT%ROWTYPE INDEX BY PLS_INTEGER;
    je souhaite faire cette opération ci (récupérer toutes les informations d'un client dans une table du type "MA_TABLE"):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT * BULK COLLECT 
    INTO CLIENT
    FROM CLIENT,ADRESSE
    WHERE CLIENT.ID_ADRESSE = ADRESSE.ID_ADRESSE 
    AND CLIENT.NOM  = 'nom';
    ==> Evidemment ceci provoque une erreur, quelqu'un aurait-il la solution ?
    Merci d'avance pour votre aide

    Bonne soirée

  2. #2
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    apparemment t'as pas passé assez de temps

    http://sheikyerbouti.developpez.com/...age=Chap5#L5.5

  3. #3
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Par défaut
    Citation Envoyé par orafrance Voir le message
    apparemment t'as pas passé assez de temps

    http://sheikyerbouti.developpez.com/...age=Chap5#L5.5
    Merci de ta réponse,

    mais je vois pas comment résoudre mon problème malgré le lien que tu m'a donné (que j'avais déjà vu :p )

    Dois-je déclarer 2 types "Ma_Table" ?!?

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    tu dois surtout utiliser un curseur pour faire le BULK COLLECT

  5. #5
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Par défaut
    Citation Envoyé par orafrance Voir le message
    tu dois surtout utiliser un curseur pour faire le BULK COLLECT
    Merci de m'aider... mais je débute dans le pl/sql pas évident !

    Pourquoi utiliser un curseur, ca permettrait de résoudre mon problème ?

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    bah oui, le BULK COLLECT ne s'applique qu'à un curseur... dans le lien que j'ai donné tu vois bien que ta syntaxe est complètement erronnée. Pourquoi tu veux passer par un tableau d'ailleurs ? Et pourquoi un BULK COLLECT ?

  7. #7
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Par défaut
    Enfait, je souhaite via un site web modifier des clients.

    J'éffectue d'abord cette méthode:

    TabCli := PackageAgence.SearchCli(client=>nom);

    TabCli étant égale à la table:

    TYPE MA_TABLE IS TABLE OF CLIENT%ROWTYPE INDEX BY PLS_INTEGER;

    Après je parcours tout mon bulk collect pour afficher tous les clients du nom mis en paramètre sur le site web et l'utlisateur peut cocher le client (si il y a plusieurs clients avec le même nom) qu'il souhaite modifier.

    Mais le problème c'est que ma procédure pour modifier un client prend tous les anciennes informations relative à lui même (nom, prénom, date,...) mais aussi tous les anciens champs de la table adresse (rue, numéro,...)

    Vois-tu ce que je veux faire ?

  8. #8
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    absolument pas

    il me semble que ton problème tiens plus du développement web que PL/SQL... parce que là j'vois pas pourquoi Oracle devrait te fournir un BULK... en tout cas pour ce que je connais du dév Web

  9. #9
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Par défaut
    Je m'y prend peut-être mal ^^

    Comment ferais-tu pour récupérer toutes les informations relative à un client c-à-d son nom, prénom, date de naissance (table client) et sa rue, numéro, localité (table rue) et afficher toutes ces informations relative à ce client dans une table html ?

    Pour ma part, j'ai donc créer une fonction SearchCli(nom) qui prend en paramètre un nom et qui me retourne une table avec tous les informations (table client) du clients dont le nom vaut le nom mis en paramètre, est-ce correct pour toi ?

    C'est donc pour cela que j'utilise une table, ainsi je parcours toute ma table (mon bulk collect) ligne par ligne et je l'affiche dans une page html

  10. #10
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    t'as regardé du coté de MARKUP dans SQL*Plus ? Après moi, j'y connais rien en développement web, mais il me semble que tu ne le prends pas par le bon bout

  11. #11
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Citation Envoyé par bon4000 Voir le message
    C'est donc pour cela que j'utilise une table, ainsi je parcours toute ma table (mon bulk collect) ligne par ligne et je l'affiche dans une page html
    si t'enléve BULK COLLECT de ta requête ça ne marche pas ?

  12. #12
    Membre averti
    Inscrit en
    Septembre 2005
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 19
    Par défaut
    Problème résolu en faisant un type_Record, ainsi j'ai tous les champs de ma table client et de ma adresse dans mon type_record !

    Si quelqu'un à mieux à proposer que ma solution, je suis partant !

    Merci pour ton aide !

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 30/08/2010, 17h24
  2. affichage d'une jointure des trois tables dans un datagrid
    Par saraseh dans le forum Windows Forms
    Réponses: 4
    Dernier message: 30/10/2009, 15h27
  3. [AC-2000] Jointure sur des tables dans la BDD et BDD extérieur
    Par Barbrady dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/09/2009, 08h37
  4. jointure avec une table dans une autre DB
    Par bastringue dans le forum Langage SQL
    Réponses: 3
    Dernier message: 26/05/2008, 15h34
  5. Réponses: 1
    Dernier message: 10/05/2006, 14h54

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