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 :

Boucle for dans une requete avec jointure


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Points : 103
    Points
    103
    Par défaut Boucle for dans une requete avec jointure
    Bonjour
    C'est pour la ieme fois, j'aurais besoin de votre aide afin de mettre en place un modification de mes requêtes.
    Hier j'ai pu faire présenté mon projet mais voial une parti je dois le refaire avec un systeme de calcul pou les relance.
    Du coup la structure de ma table relance a encore changé

    la nouvelle structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    --
    -- Structure de la table `relance`
    --
     
    CREATE TABLE IF NOT EXISTS `relance` (
      `id_numero` varchar(7) NOT NULL,
      `f_facture` varchar(14) NOT NULL,
      `date` varchar(8) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    Ma table facture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    --
    -- Structure de la table `facture`
    --
     
    CREATE TABLE IF NOT EXISTS `facture` (
      `id_numero` varchar(7) NOT NULL,
      `f_facture` varchar(14) NOT NULL,
      `intitule` varchar(60) NOT NULL,
      `montant` double NOT NULL,
      `session` tinytext NOT NULL,
      `date_fact` varchar(20) NOT NULL,
      `date_echeance` varchar(20) NOT NULL,
      `type_fact` varchar(15) NOT NULL,
      `annee` varchar(5) NOT NULL,
      PRIMARY KEY (`f_facture`),
      UNIQUE KEY `facture` (`f_facture`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    Dans cette table je n'ai pas de clef primaire ni d'index.
    Donc on peux avoir une facture qui apprait a plusieurs reprise mais avec une date différent.

    Via une requete avec une jointure sur mes tables facture et relance, je dois faire un count des relance que je dois afficher dans aun tableau

    Du coup afin d'afficher correctement mes données en ligne, je dois faire un boucle avec for.
    La dessus je suis pas trop fort.

    J'ai commencer a faire ma requete mais voila il ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
    <?php
    include('../inc/inc_connexion.php');
     
    $f_facture="";
     
    $requete = 'SELECT f_facture, count(f_facture) FROM relance union ALL SELECT f_facture FROM facture WHERE facture.f_facture = $f_facture';
    $resultat = mysql_query($requete) or exit(mysql_error() . "<br/>$requete");
     
    while ($ligne = mysql_fetch_assoc($resultat))
    	{
        echo "{$ligne['0']}<br/>";
    	}
     
    $i = 0;
     
    ?>
    Le script n'est pas terminé j'essaie d'avancer pas a pas

    Merci de votre aide

    Runcafre91

  2. #2
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Bonjour,

    une jointure sous mysql ne se fait pas avec WHERE a=b mais avec INNER JOIN sinon tu récupérera un produit cartésien

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select * FROM tableA INNER JOIN tableB on tableA.champ=tableB.champ

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Bonjour,

    une jointure sous mysql ne se fait pas avec WHERE a=b mais avec INNER JOIN sinon tu récupérera un produit cartésien

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Select * FROM tableA INNER JOIN tableB on tableA.champ=tableB.champ
    Bonjour,

    Merci de votre réponse, j'ai créer ma requete avec la jointure mais cela ne fonctionne pas comme il le faut.

    Ma requete est faite sur deux table facture et relance, et chaque facture de la table relance peux avoir plusieurs date. Ma requete dois me permettre de récupérer le nombre de date par facture.

    Puis grace à une boucle je dois les afficher en ligne pour chaque facture sachant que certaine factue auront des valeur null, ilfaudra toute de même qu'il soient afficher.

    Voici ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $requete="Select COUNT('date') AS relance,date,relance.f_facture,relance.id_numero
    From relance left Join facture  On facture.f_facture = relance.f_facture order by facture.id_numero AND relance.id_numero=facture.id_numero";
    Cette requete me donne qu'une ligne avec une facture et le nombre de ligne total de la base

    Merci de votre aide

    Runcafre91

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Décembre 2008
    Messages
    299
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2008
    Messages : 299
    Points : 103
    Points
    103
    Par défaut
    Citation Envoyé par runcafre91 Voir le message
    Bonjour,

    Merci de votre réponse, j'ai créer ma requete avec la jointure mais cela ne fonctionne pas comme il le faut.

    Ma requete est faite sur deux table facture et relance, et chaque facture de la table relance peux avoir plusieurs date. Ma requete dois me permettre de récupérer le nombre de date par facture.

    Puis grace à une boucle je dois les afficher en ligne pour chaque facture sachant que certaine factue auront des valeur null, ilfaudra toute de même qu'il soient afficher.

    Voici ma requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $requete="Select COUNT('date') AS relance,date,relance.f_facture,relance.id_numero
    From relance left Join facture  On facture.f_facture = relance.f_facture order by facture.id_numero AND relance.id_numero=facture.id_numero";
    Cette requete me donne qu'une ligne avec une facture et le nombre de ligne total de la base

    Merci de votre aide

    Runcafre91
    Ps si quelqu'un pouvais me donnée la struture de la boucle for a apliquer au resultat d'une requete

    Merci

    Runcafre91

Discussions similaires

  1. [MySQL] Boucle FOR dans une requete Mysql
    Par skins dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/11/2011, 19h04
  2. Boucle For dans une requete SQL
    Par laurent0 dans le forum Général Python
    Réponses: 2
    Dernier message: 10/08/2011, 17h41
  3. Réponses: 12
    Dernier message: 23/05/2007, 10h37
  4. Réponses: 5
    Dernier message: 06/02/2007, 13h46
  5. [MySQL] Erreur dans une requête avec jointures
    Par bobic dans le forum Langage SQL
    Réponses: 17
    Dernier message: 03/08/2006, 13h04

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