Bonjour,

J'ai besoin de trier par DATE le resultat de 2 requetes similaires et pour cela j'essaie d'utiliser la commande UNION

req1
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SELECT articles.texte texte, articles.id article_id, articles.date_creation date_creation
FROM articles
INNER JOIN designations ON articles.code = designations.code
WHERE url =:designation AND articles.id_langue =:id_langue AND status>1
ORDER BY date_creation DESC LIMIT 1)

req2
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SELECT articles.texte texte, articles.id article_id, articles.date_creation date_creation
FROM articles
INNER JOIN designations ON articles.code = designations.code
WHERE url =:designation AND articles.id_langue =:id_langue AND id_auteur =:id_user AND status<2
ORDER BY date_creation DESC LIMIT 1

les 2 requetes fonctionnent bien seules mais lorsque je les rassemblent avec UNION je n'ai aucun resultat
enfin si, avec phpmyadmin ça fonctionne:

phpmyadmin
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
( SELECT articles.texte texte, articles.id article_id, articles.date_creation date_creation FROM articles INNER JOIN designations ON articles.code = designations.code WHERE url ="formation/edi" AND articles.id_langue = 1 AND status>1 ORDER BY date_creation DESC LIMIT 1) UNION ( SELECT articles.texte texte, articles.id article_id, articles.date_creation date_creation FROM articles INNER JOIN designations ON articles.code = designations.code WHERE url ="formation/edi" AND articles.id_langue = 1 AND id_auteur = 57 AND status<2 ORDER BY date_creation DESC LIMIT 1) ORDER BY date_creation

mais en php rien a faire, resultat vide:
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
$req1 = $bdd->prepare('
	(SELECT articles.texte texte, articles.id article_id, articles.date_creation date_creation
	  FROM articles
	  INNER JOIN designations ON articles.code = designations.code
	  WHERE url =:designation AND articles.id_langue =:id_langue AND status>1
	  ORDER BY date_creation DESC LIMIT 1)
	UNION 
	  (SELECT articles.texte texte, articles.id article_id, articles.date_creation date_creation
	  FROM articles
	  INNER JOIN designations ON articles.code = designations.code
	  WHERE url =:designation AND articles.id_langue =:id_langue AND id_auteur =:id_user AND status<2
	  ORDER BY date_creation DESC LIMIT 1)
	ORDER BY date_creation');
$req1->bindValue(':id_user', '57', PDO::PARAM_INT);
$req1->bindValue(':designation', $designation, PDO::PARAM_INT);
$req1->bindValue(':id_langue', '1', PDO::PARAM_INT);
j'ai essayé de jouer avec les espaces ou de donner un alias a la table cree par l'UNION mais ça ne fonctionne toujours pas.

help