fonctionne sous phpmyadmin mais pas sous php
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:
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:
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:
( 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:
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