Forum Clubic

UNION et provenance des lignes

Salut à tous,

J’execute une requete SQL via PHP, afin de combiner deux tables(même structure) triés par date, ça fonctionne très bien.
Petit souci… j’aimerais bien savoir de quelle table provient chaque ligne… car chaque ligne est associée à une image stockée dans un dossier.
Disons que pour T1 les images sont dans IMG, et pour T2 dans IMG2… et si je veux afficher les images… c’est soit pour les lignes de T1 ou T2… les deux pas moyens… ou sinon, je vois pas comment.
Et je précise, que je ne peux pas combiner les deux dossiers en un seul… ou les deux tables en une seule.
Je sais pas trop comment procèder, et ne sais même pas si ceci est réalisable avec un peu d’astuce via PHP… mais je sèche complètement là…

Merciii pour une piste quelconque :slight_smile:
Edité le 06/07/2008 à 20:45

Ne peux-tu pas passer par une jointure de tables? Je suis pas trop sure d’avoir compris comment sont indexées tes tables.

Salut,

Je dirais un peu au pif:


(SELECT nomImage, 1 FROM IMG) UNION (SELECT nomImage, 2 FROM IMG2) 

Tu penses que ça pourrait fonctionner? (mettre une valeur dans le select pour pouvoir connaître leur provenance).
J’espère aussi que ça peut répondre à ta question…

A+

Oui, ça fonctionnerait.

Salut,

Alors, j’ai pas tout à fait compris la méthode de Dusty…
En fait, j’ai pas de table IMG ou IMG2… ce sont des dossiers qui contiennent les images respectives de chaque table.
J’ai le juste le nom de l’image, si je faisais ça en requête normale sur une seule table (T1 ou T2) il n’y a qu’un seul choix possible de dossier, puisque la requête ne touche qu’une seule des deux tables.

Par exemple pour une table j’ai ça :
TABLE1

ID - 1
TITRE - Petit test
NOM_IMG - azerty.jpg
TEXTE - Un texte de test…

Le chemin de l’image pour cette ligne serait : /IMG1/azerty.jpg
Je n’ai pas le dossier à utiliser dans le nom de l’image… la deuxième table à été rajouté pour d’autres besoins sans que cela doive se mélanger avec la première.
Donc, je n’ai aucun moyen de savoir lorsque je fais un UNION de quelle table la ligne provient…

La méthode de Dusty, c’est la première fois que je la vois… et je sais pas du tout comment m’en servir :confused:
Comment j’interprète ce 1 ou ce 2 ?

Merci.

Hé bien, pour commencer, tu utilises des alias:

(SELECT nomImage, 1 as provenance FROM IMG) UNION (SELECT nomImage, 2 as provenance FROM IMG2)

Et ensuite, côté php, tu peux traîter la provenance ainsi:


switch ((int)$array['provenance']) {
  case 1: echo 'Table 1'; break;
  case 2: echo 'Table 1'; break;
  default: echo 'Erreur'; break;
}

Ca marche du tonerre !
Merci à vous deux :wink: