[mysql] Joindre des tables [résolu]

Joindre des tables [résolu] [mysql] - PHP - Programmation

Marsh Posté le 22-03-2003 à 01:47:58    

Pour afficher la une de ma page d'accueil, je dois mixer mes tables contenant les infos pour les previews et les tests.
Les tables sont sous le format (simplifié -sachant que les deux tables ne comportent pas le même nombre de colonnes, bien entendu) :
tests :
ID
Titre
Date
 
previews :
ID
Titre
Date
 
Je voudrais pouvoir mixer les deux tables sur ces éléments-là afin de pouvoir sélectionner les 4 articles les plus récents. Bien entendu, il faut que le type de la table soit conservé (pour savoir s'il faudra ensuite faire un lien vers le progamme de tests ou de previews). Quelle est la méthode la moins gourmande en ressource pour y arriver ?


Message édité par monsieur tomate le 22-03-2003 à 11:57:47

---------------
HardGamers.org
Reply

Marsh Posté le 22-03-2003 à 01:47:58   

Reply

Marsh Posté le 22-03-2003 à 11:25:32    

select ID,Titre,Date,'tableA' from tableA
union
select ID,Titre,Date,'tableB' from tableB
order by date
 
quelque chose comme ca ...

Reply

Marsh Posté le 22-03-2003 à 11:37:33    

après une petite verif, union ne fonctionne qu'à partir de mysql 4 et kom j'ai un serveur de merde, je n'ai que mysql 3.2 dessus...


---------------
HardGamers.org
Reply

Marsh Posté le 22-03-2003 à 11:49:49    

tu fais deux requetes, tu colles les resultats ds un tableau, tu trie le tableau et voila ...

Reply

Marsh Posté le 22-03-2003 à 11:50:42    

Tu es exactement dans le cas qui nécessiterait un UNION [:proy]

Reply

Marsh Posté le 22-03-2003 à 11:51:07    

ah wé, j'vais voir
 
sinon je regardais comment émuler la fonction union et g trouvé ça :
 
SELECT IFNULL(beta_tests.ID, beta_previews.ID) AS ID, IFNULL(beta_tests.titre, beta_previews.titre) AS titre
FROM _dummy AS D
LEFT JOIN beta_tests ON (D.num = 0)
LEFT JOIN beta_previews ON (D.num = 1)
WHERE D.num < 2
 
ça marche, mais çe ne me dit pas la différence entre la table preview et test, alors je vais essayer ta méthode


---------------
HardGamers.org
Reply

Marsh Posté le 22-03-2003 à 11:52:54    

C'est ce que je cherchais :D  
 
Si, tu sais de quelle table vient l'info, en fonction de la valeur de D.num :)

Reply

Marsh Posté le 22-03-2003 à 11:55:14    

j'vais essayer de ce pas


Message édité par monsieur tomate le 22-03-2003 à 11:58:25

---------------
HardGamers.org
Reply

Marsh Posté le 22-03-2003 à 11:57:35    

j'ai testé et ça marche :)
merci les gars !


Message édité par monsieur tomate le 22-03-2003 à 11:58:32

---------------
HardGamers.org
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed