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

PHP & Base de données Discussion :

[Debutant] Problème de selection dans une requete


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut [Debutant] Problème de selection dans une requete
    Bonjour,

    Voila mon problème je souhaite effectuer une requête de sélection sur deux tables une DVD et l'autre Séries Tv en fonction d'un genre.
    La requête ne fonctionne pas correctement car au lieu de mettre qu'un nom unique de film elle boucle autant de fois que le nombre de séries qui correspond au fonction du genre.

    Voici le code de la requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    "SELECT tbldvd.FldIdRef as IdDVD, tbldvd.FldTitre as TitreDVD, tblseriestv.FldIdRef as Id_STV_DVD, 
    tblseriestv.FldTitre as Titre_STV_DVD, tblseriestv.FldSaison as Saison_STV_DVD
    FROM tbldvd, tblseriestv where tbldvd.FldIdGenre = '$ID' and tblseriestv.FldIdGenre = '$ID' 
    ORDER BY tbldvd.FldTitre, tblseriestv.FldTitre, tblseriestv.FldSaison"
    $ID est la variable de sélection

    merci d'avance

  2. #2
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    Salut,

    je pense que tu n'a pas fait de jointure entre les tables dans le where.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    Même avec un where ça ne fonctionne pas ça boucle encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT tbldvd.FldIdRef as IdDVD, tbldvd.FldTitre as TitreDVD, tblseriestv.FldIdRef as Id_STV_DVD, 
    tblseriestv.FldTitre as Titre_STV_DVD, tblseriestv.FldSaison as Saison_STV_DVD
    FROM tbldvd, tblseriestv where tbldvd.FldIdGenre = '$ID' and tblseriestv.FldIdGenre = '$ID' 
    and tbldvd.FldIdGenre = tblseriestv.FldIdGenre
    ORDER BY tbldvd.FldTitre, tblseriestv.FldTitre, tblseriestv.FldSaison

  4. #4
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    je pense qu'il faut faire une chose du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE tbldvd.FldIdGenre = tblseriestv.FldIdGenre AND tbldvd.FldIdGenre = '$ID'

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    Désolé mais j'obtiens toujours la même chose

  6. #6
    Membre averti Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Points : 355
    Points
    355
    Par défaut
    cad ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    AU lieu d'avoir un titre de film puis le suivant il s'affiche 7 fois le même film puis 7 fois le suivant jusqu'à la fin de l'exécution de la requête donc au lieu d'avoir 76 titres j'en ai 7 fois plus

  8. #8
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT tbldvd.FldIdRef as IdDVD, 
            tbldvd.FldTitre as TitreDVD, 
            tblseriestv.FldIdRef as Id_STV_DVD, 
            tblseriestv.FldTitre as Titre_STV_DVD,
            tblseriestv.FldSaison as Saison_STV_DVD
    FROM tbldvd
    INNER JOIN tblseriestv ON tbldvd.FldIdGenre=tblseriestv.FldIdGenre
    WHERE tbldvd.FldIdGenre = '$ID' 
    ORDER BY tbldvd.FldTitre, tblseriestv.FldTitre, tblseriestv.FldSaison
    Maintenant, chaque ligne comportera toutes les colonnes de la projection (SELECT), ce qui est le comportement normal de SQL.
    C'est au script qui soumet la requête de gérer les ruptures dans le résultat avec le langage procédural, PHP ou je ne sais trop quoi.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    J'ai toujours le même résultat 7 fois le même titres puis le suivant jusqu'à la fin de la requête

  10. #10
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par motard6 Voir le message
    J'ai toujours le même résultat 7 fois le même titres puis le suivant jusqu'à la fin de la requête
    Et alors, qu'est-ce qu'il y a d'anormal à cela ?
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    le problème est que au lieu d'avoir un titre puis le suivant j'ai 7 fois le premier titre puis 7 fois le second jusqu'à la fin de l'exécution de la requête

  12. #12
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    C'est le reflet de la réalité des tables de la base de données, non ?
    La requête n'invente pas que 7 DVD correspondent à la première émission et ainsi de suite.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    En fait ce qui se passe c'est qu'il y a 7 séries tv pour le genre demander donc il associe 7 fois le film aux 7 séries tv différentes puis ainsi de suite jusqu'à la fin de l'exécution de la requête donc je ne sais pas comment faire?

  14. #14
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Si ce que tu veux c'est les séries TV d'un côté et les DVD de l'autre au sein de la même requête, ce n'est pas une jointure qu'il te faut faire mais deux requêtes en UNION.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    Oui c'est ce que je veux mais tu fais ça comment avec un AND ?

  16. #16
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    Merci pour le lien mais j'ai un message d'erreur qui apparait :
    "The used SELECT statements have a different number of columns"

    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    "(SELECT FldIdRef as IdDVD, FldTitre as TitreDVD FROM tbldvd where FldIdGenre = '$ID' ORDER BY FldTitre)
    UNION
    (SELECT FldIdRef as Id_STV_DVD, FldTitre as Titre_STV_DVD, FldSaison as Saison_STV_DVD 
    FROM tblseriestv where FldIdGenre = '$ID' ORDER BY FldTitre, FldSaison)";

  18. #18
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Citation Envoyé par motard6 Voir le message
    "The used SELECT statements have a different number of columns"
    Les requêtes SELECT n'ont pas le même nombre de colonnes.
    C'est en effet rédhibitoire, quand on veut faire l'UNION de deux SELECT les projections (ensemble des colonnes de la clause SELECT) doivent avoir le même nombre de colonnes et les colonnes doivent être de même type pour un même rang dans le SELECT.
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 34
    Points : 12
    Points
    12
    Par défaut
    Peux tu m'expliquer car là j'ai pas compris du tout.
    Que dois-je faire?

  20. #20
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Quelque chose comme ça:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (SELECT FldIdRef as Id, FldTitre as Titre,
    NULL as Saison, 'tbldvd' AS source 
    FROM tbldvd 
    where FldIdGenre = '$ID' )
    UNION
    (SELECT FldIdRef as Id, FldTitre as Titre, FldSaison as Saison,
    'tblseriestv' AS source
    FROM tblseriestv 
    where FldIdGenre = '$ID' )
    ORDER BY Titre, Saison";
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/02/2008, 16h08
  2. Problèmes de calcul dans une requete imbriquée
    Par LeNovice dans le forum Langage SQL
    Réponses: 6
    Dernier message: 21/03/2007, 16h56
  3. Réponses: 1
    Dernier message: 20/07/2006, 17h03
  4. [débutant] problème de condition dans une requete
    Par banker dans le forum Access
    Réponses: 5
    Dernier message: 22/03/2006, 13h52
  5. [VBA-E]problème de date dans une requete
    Par isa21493 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 24/02/2006, 11h45

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