Version complète: sur le forum Webmaster Hub : Requête sql --Union Tables --
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
inizar
Bonjour ;

j'ai mis une requête sql mais je ne sais pas pourquoi ça marche pas , peu être j'ai oublié quelque chose!!

c'est une requête avec UNION de deux tables :

CODE
$sql='SELECT  id,titre FROM  champ1 order by id DESC LIMIT 1   UNION
         SELECT  id,titre FROM  champ2   order by id DESC LIMIT 1 ';


j'ai erreur de requête

merci smile.gif

inizar
ya personne sniff
samyghan
Je ne connais pas la syntaxe UNION mais je te propose une autre solution que je connais :

CODE
SELECT champ1.id, champ1.titre, champ2.id, champ2.titre
FROM champ1, champ2
ORDER BY champ1.id, champ2.id DESC
LIMIT 1;


Cependant, si tu fais une jointure, il manque le WHERE clé primaire = clé étrangére, peux tu préciser exactement ce que tu veux faire et la structure de ta base de donnée ?

EDIT : fais attention inizar, tes deux derniers posts sont dans les mauvaises catégories celui-ci aurai du aller dans SQL et le précédent dans Javascript
inizar
Merci pour votre réponse ; oui je suis désole smile.gif , pour la méthode UNION j'ai lu que ça marché avec une version 4 ou plus mais quand je l'ai essayé ça na pas marché pourtant j'ai la version 5 sur mon hebergeur mais bon je vais essayé la votre

la structure de ma base est la suivante :

j'ai plusieurs tables 12 lol mais c'est le même principe avec deux happy.gif exemple :

international

-id
-titre
-presentation
-article
-file
-date


juridique

-id
-titre
-presentation
-article
-file
-date

(pareil) pour les autres , je voulais faire une requete qui va me permettre d'afficher les derniers post avec limit 1 le dernier post dans une table

j'espère que j'étais clair smile.gif
Portekoi
Bonsoir,

Quand tu dis "j'ai erreur de requête ", peux tu mettre le texte de l'erreur?


Portekoi
inizar
oui , quand j'ai mis ça :

CODE
$sql="SELECT international.id, international.titre, politique.id, politique.titre
FROM international, politique  ORDER BY international.id, politique.id   DESC ";

yvais pas erreur mais me donné que l'article de la table politique pourtant ma table international n'est pas vide

et quand j'ai mis ça :

CODE
$sql="SELECT * FROM international ORDER BY date DESC limit 1
UNION
SELECT * FROM economique ORDER BY date DESC limit 1
UNION
SELECT * FROM politique ORDER BY date DESC limit 1
  ";


javais erreur : Erreur : Incorrect usage of UNION and ORDER BY


merci
Marie-Aude
Ta première syntaxe est la bonne, mais essaie avec LIMIT 0, 1

CODE
SELECT * FROM
(
SELECT  international.id AS ID, international.titre AS titre FROM  international LIMIT 0, 1  

UNION SELECT politique.id AS ID, politique.titre AS titre FROM  politique LIMIT 0, 1  
) selection
ORDER BY ID DESC


La façon dont je l'ai écrit va faire un tri global sur l'ensemble des champs de la requête. Si tu veux avoir uniquement le champ ID le plus élevé dans chaque table tu peux remettre le ORDER BY ID DESC à l'intérieur de chaque clause.
Sinon je pense qu'un
CODE
SELECT MAX(id) AS ID, titre AS titre FROM  international GROUP BY ID  

UNION SELECT MAX(id) AS ID, titre AS titre FROM  politique GROUP BY ID


doit le faire aussi mais je n'ai pas testé
inizar
Bonjour ,

merci beaucoup smile.gif , le dernier code marche trés bien et surtout merci du temps que vous avez pris...wink.gif

bonne journée


@+
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.