Aller au contenu

Requête sql --Union Tables --


Sujets conseillés

Posté

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 :

 $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 :)

Posté (modifié)

Je ne connais pas la syntaxe UNION mais je te propose une autre solution que je connais :

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

Modifié par samyghan
Posté

Merci pour votre réponse ; oui je suis désole :) , 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 ^^ 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 :)

Posté

oui , quand j'ai mis ça :

 $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 :

$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

Posté

Ta première syntaxe est la bonne, mais essaie avec LIMIT 0, 1

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

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é

Posté

Bonjour ,

merci beaucoup :) , le dernier code marche trés bien et surtout merci du temps que vous avez pris...;)

bonne journée

@+

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...