Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/11/2011, 23h25   #1
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 32
Points : 19
Points : 19
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 :
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 :
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 :
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 :
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
pablofr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2011, 03h23   #2
Membre Expert
 
Avatar de Seb33300
 
Homme Sébastien Alfaiate
Développeur Web
Inscription : janvier 2007
Messages : 1 330
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Alfaiate
Âge : 26
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : janvier 2007
Messages : 1 330
Points : 1 659
Points : 1 659
Tu peux rajouter une colonne supplémentaire dans ta requete pour indiquer la table :


Code sql :
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 Engineer PHP 5.3

« 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
Seb33300 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/11/2011, 17h49   #3
Futur Membre du Club
 
Inscription : juillet 2010
Messages : 32
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 32
Points : 19
Points : 19
Merci je test tout de suite
pablofr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h17.


 
 
 
 
Partenaires

Hébergement Web