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 :
REQ 2 :
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
Je peux utiliser UNION ALL qui est plus tot efficace :
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
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
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' )
J'ai essayé avec php :
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
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) ); ...
Avez vous une idée pour combiner tout cela.
Peux être une bonne requette SQL avec LEFT JOIN ?
Merci
Partager