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 :

[SQL] Relations complexes entre deux tables


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut [SQL] Relations complexes entre deux tables
    Bonjour,

    J'ai un petit souci que je n'arrive pas à résoudre. Sur mon site, j'ai créé un système de parution qui permet d'ajouter plusieurs "régles" de parutions.

    Par exemple, je peux dire au programme que mon article n°500 sera à la une du 15 au 17 juin, puis ira en rubrique du 17 au 30 juin.

    Il y a donc deux tables en jeu: la table des régles de parutions (table1), et la table des articles (table2). Jusque là tout va bien.

    Lorsque je veux récupérer le liste des articles, je procède ainsi:

    • REQUETE1 - D'abord une requête dans la table1 pour chercher tous les articles qui sont censés être affichés dans la page. (Par exemple on est le 18 juin, donc mon article n°500 va sortir). Je fais donc une requête en boucle qui me sort tous les ID des articles concernés.
    • REQUETE2 (Dans la 'boucle' de REQUETE1) Pour récupérer tout le contenu des articles (table2 selon ce que m'a sorti REQUETE1)


    Dans ma table2 (article), il y'a un champ 'note', c'est la note que le rédacteur donne à l'événement.

    Je voudrais pouvoir sortir la liste des articles triés selon la note. Mais celà est compliqué puisque je passe d'abord par la table1 (régles de parutions)...

    Si vous avez compris quelque chose... et si vous avez une solution... je suis preneur.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 116
    Points : 120
    Points
    120
    Par défaut
    Bonjour,
    Ok je pense avoir compris.
    Mais sans le shema des tables exactes je ne peux pas pondre cette requete SQl comme ca.
    Mais il devrait y avoir un IN quelauepart qui pointerait sur un SELECT de table2.
    Envoyer vos table (et peut etre une explication plus detaille) je vous donnerais la requete.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Table 1: (tables de parution)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE `abouclages` (
      `id` int(11) NOT NULL auto_increment,
      `id_object` int(11) NOT NULL default '0',
      `debut` varchar(255) NOT NULL default '',
      `fin` varchar(255) NOT NULL default '',
      `type` varchar(255) NOT NULL default '',
      `place` int(11) NOT NULL default '0',
      `rubrique` int(11) NOT NULL default '0',
      `align` int(11) NOT NULL default '0',
      PRIMARY KEY  (`id`),
      KEY `id_object` (`id_object`)
    ) ENGINE=MyISAM AUTO_INCREMENT=240 DEFAULT CHARSET=latin1 AUTO_INCREMENT=240 ;

    Table 2: (articles)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE `cd` (
      `id` int(11) NOT NULL auto_increment,
      `titre` varchar(255) NOT NULL default '',
      (.... etc ....)
      `avis` varchar(5) NOT NULL default '',
      PRIMARY KEY  (`id`),
      KEY `id` (`id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=1263 DEFAULT CHARSET=latin1 AUTO_INCREMENT=1263 ;


    ---------------------------------------

    Le champ concerné est donc `AVIS` (table cd), c'est là qu'il y a la note.

    Voici le code en gros, j'ai élagé :

    Code PHP : 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
    <?
    $request = "SELECT * FROM abouclages WHERE type='cd' AND rubrique='1' AND debut<='1181337616' AND fin>='1181337616' ORDER BY id DESC";
    $exec = @mysql_query ($request, $connect) ;
     
    	if ($myrow = mysql_fetch_array($exec)){
    		do{
     
    			$request_cd = "SELECT * FROM cd WHERE id=\"".$myrow['id_object']".\" ";
    			$exec_cd 	 = @mysql_query ($request_cd,$connect) ;
    			$cd   = @mysql_fetch_object ($exec_cd);
     
    			echo $cd->titre;
    			/* (etc...) */
     
    		}while($myrow = mysql_fetch_array($exec));
    	}
    	?>

    Donc moi, je voudrais pouvoir trier les résultats selon la note. Mais comme je passe d'abord par la table abouclages, je vois pas trop....

    D'avance, mille mercis

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    J'ai trouvé: cette requête permet d'y arriver:

    Merci quand même!!!

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT * 
    FROM abouclages a
    INNER JOIN cd ON cd.id = a.id_object
    WHERE TYPE = 'cd'
    AND a.rubrique = '1'
    AND a.debut <= '1181339982'
    AND a.fin >= '1181339982'
    ORDER BY avis

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

Discussions similaires

  1. [AC-2007] Relation cyclique entre deux tables
    Par GonzooJC dans le forum Access
    Réponses: 9
    Dernier message: 09/11/2011, 14h36
  2. pl/sql curseur update entre deux tables
    Par Fiona08 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 27/11/2010, 01h14
  3. [debutant]ms sql serveur delete entre deux tables
    Par ChristopheOce dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/06/2006, 16h36
  4. [novice] relation fk entre deux tables
    Par localhost dans le forum Langage SQL
    Réponses: 1
    Dernier message: 30/10/2005, 06h33
  5. relation double entre deux tables
    Par thibautche dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/05/2005, 11h31

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