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 :

Besoin d'aide pour une jointure SQL complexe


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Besoin d'aide pour une jointure SQL complexe
    Bonsoir, je vais essayer de faire au plus simple pour expliquer mon pb

    j'ai une table Article A (id_article, titreA, id_journal)
    et une table Journal J (id_journal, titreJ, id_journal_old)

    nous venons de créer un nouveau journal (ID=300) remplacant un ancien journal (ID=20). Nous avons donc modifié la valeur de l'identifiant.

    Comme des anciens articles faisait référence à l'ancien journal nous avons créé un champs id_journal_old


    Donc il existe dans la table Article, des lignes avec id_journal = 20 (l'ancien)

    J'ai qu'une seule info en entrée pour faire ma requete, c'est le id_journal=300 (nouveau) et je souhaiterai trouver tous les articles ancien et nouveau en une requete.

    Si quelqu'un peut m'aider ca serait vraiment sympa

    Merci et bonne soirée

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE Article SET id_journal = 300 
    WHERE id_journal = 20

  3. #3
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 327
    Points
    4 327
    Par défaut
    hum, si tu veux récupérer tout d'un coup de facons a t'adapter au nombre de new journaux ayant remplacé un vieux, (un nouveau d'un nouveau d'un nouveau), tu a guerre le choix que de faire comme ceci :

    tu cré une procédure stocké, qui fera une jointure entre ton article et le journal a check. puis ta procédure répetera ceci jsuqu'a trouver une journal qui n'as pas d'ancien.
    Au fur et a meusure de sa recherche elle empile les resultats dans un cursor (conteneur), puis a la fin elle retourne le contenu du cursor, ca te donnerais une requete finale du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CALL GET_ARTICLES(300);
    bon par contre faut te frapper l'écriture de la procédure.

    Si tu t'en sort pas n'hésite pas a le faire savoir on verra ca ensemble.

  4. #4
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Effectivement, tu peux actuellement t'en sortir avec une requête SQL, mais dès que ton nouveau journal sera lui aussi remplacé, tu seras coincé...

    Quel SGBD utilises-tu ? Avec Oracle, tu peux faire des requêtes hiérarchiques, ce qui pourraît résoudre ton problème.
    Avec les autres SGBD, je ne sais pas...

    Sinon, comme le dit kazou, reste la procédure stockée.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci à tous pour vos réponses.

    J'ai contourné le pb d'une certaine manière, mais je voulais vraiment savoir comment il était possible de faire ce genre de requete, purement en sql.

    Admettons qu'on puisse une seule et unique fois donnez un nouveau nom à un journal (pas de recursivité du coup), une requete SQL serait possible ?

  6. #6
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select ...
    from article a, journal j
    where (a.id_journal=j.id_journal or a.id_journal=j.id_journal_old)
    and j.id_journal=300

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci d'avoir pri le temps de répondre marchand_de_sable.

    Ce n'est pas ca, mais bon, je vais me pencher un peu plus sur mon sql, je vais bien finir par trouver.
    Je n'ai sans doute pas été clair ?!!!

    ps : la requete me retourne les deux journaux mais pas tous les articles de l'ancien et du nouveau journal.

  8. #8
    Membre averti

    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 418
    Points : 328
    Points
    328
    Par défaut
    Citation Envoyé par Naruto-uzumaki
    ps : la requete me retourne les deux journaux mais pas tous les articles de l'ancien et du nouveau journal.
    Comprends pas : je croyais qu'il n'y avait qu'un journal dont vous aviez mis à jour l'identifiant
    C'est pas ça ?

    Ou alors vous avez 1 occurence du journal avec id_journal=20
    ET une occurence avec id_journal=300 ??
    (et dans ce cas, quel est la valeur de id_journal_old quand id_journal=20 ?)

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Je n'ai peut être moi non plus rien compris (ce qui est logique quand on explique pas clairement son besoin) mais je ne vois pas ce que vous avez à faire à part mettre à jour votre id_journal à 300 pour les lignes où il est à 20.

  10. #10
    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 vmolines Voir le message
    Je n'ai peut être moi non plus rien compris (ce qui est logique quand on explique pas clairement son besoin) mais je ne vois pas ce que vous avez à faire à part mettre à jour votre id_journal à 300 pour les lignes où il est à 20.
    Gerer les contraintes relationnelles...

  11. #11
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Oui logiquement

Discussions similaires

  1. besoin d'aide pour une jointure avec une exclusion
    Par manu_71 dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/02/2007, 11h22
  2. Besoin d'aide pour une requete SQL
    Par fabris dans le forum Requêtes
    Réponses: 15
    Dernier message: 02/05/2006, 17h03
  3. Besoin d'aide pour une requete SQL
    Par fabris dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/04/2006, 20h27
  4. Besoin d'aide pour une requête SQL
    Par Borami dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2005, 10h33
  5. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56

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