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 :

Jointure et Union en SQL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Points : 72
    Points
    72
    Par défaut Jointure et Union en SQL
    Bonsoir à tous,

    Je suis bloqué depuis quelque temps sur une problématique.

    J'aimerai sortie une liste de rendez-vous de deux table différentes et des les trier par ordre.


    REQ 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM `table_1` WHERE archiver='0' ORDER BY GREATEST(`date_rvd_1` ,`date_rvd_2`) ASC LIMIT 0,100
    REQ 2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM `table_2` WHERE archiver='0' ORDER BY GREATEST(`date_rvd_1` ,`date_rvd_2`) ASC LIMIT 0,100
    Je peux utiliser UNION ALL qui est plus tot efficace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (SELECT id,date_rvd_1, date_rvd_2  FROM `table_2` WHERE archiver='0' ) UNION ALL (SELECT id,date_rvd_1, date_rvd_2  FROM `table_2` WHERE archiver='0' )
    Le problème avec cette requête c'est que je ne peux pas différencier les résultats venant de la table_1 de la table_2 et mon


    J'ai essayé avec php :


    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
    19
    20
    21
    22
     
    	function f_table_1(){
    	$sql = 'SELECT * FROM table_1 WHERE archiver='0'  ORDER BY GREATEST(`date_rvd_1` ,`date_rvd_2`) ;
    		foreach($DB->GetArrayObj($sql) as $row) {
    			if($full) {
    				$mon_tabl = array();
    				$mon_tabl['table'] = 'table_1';
    				$n[] = $mon_tabl;
    			} else {
    				$n[] = $row->id;
    			}
    		}
     
    		return $n;
    	}
        }
     // Pareil pour la table_2
    ...
    		$tab = array_merge(
    			$res->f_table_1($full), $res->f_table_2($full)
    		);
    ...
    Le problème de cette méthode est que je n'ai pas de requette sql, dont j'ai besoin par la suite pour ma pagination, mes filtres, etc etc

    Avez vous une idée pour combiner tout cela.

    Peux être une bonne requette SQL avec LEFT JOIN ?

    Merci

  2. #2
    Membre émérite
    Avatar de Seb33300
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 563
    Points : 2 390
    Points
    2 390
    Par défaut
    Tu peux rajouter une colonne supplémentaire dans ta requete pour indiquer la table :


    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (SELECT id,date_rvd_1, date_rvd_2, 'table1'  FROM `table_1` WHERE archiver='0' ) 
     
    UNION ALL
     
    (SELECT id,date_rvd_1, date_rvd_2, 'table2'  FROM `table_2` WHERE archiver='0' )
    Zend Certified PHP Engineer

    « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Points : 72
    Points
    72
    Par défaut
    Merci je test tout de suite

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

Discussions similaires

  1. [MySQL] Jointure : erreur de syntaxe SQL
    Par kawther dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/03/2007, 17h25
  2. JOINTURES EXTERNES - Migration Sybase -> SQL Server
    Par vincenteraptor dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/07/2006, 12h09
  3. 90 Jointures dans ma requete sql
    Par cedric31 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/02/2006, 09h17
  4. Jointure OUTER LEFT dans SQL server
    Par [DreaMs] dans le forum Langage SQL
    Réponses: 2
    Dernier message: 25/01/2006, 20h50
  5. Plusieurs jointures dans une requête sql
    Par Pero dans le forum Langage SQL
    Réponses: 3
    Dernier message: 21/09/2005, 20h59

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