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