Lister des données sur deux tables différentes

Eléphant du PHP | 78 Messages

14 août 2007, 16:57

Bonjour ,

Je voudrais sortir une liste de données issues deux tables avec des structures différentes donc je peux pas utiliser UNION. Y a t -il un moyen?

J'ai une table vetement avec IDVETEMENT,NOM,COULEUR,TAILLE,QUANTITE

et une table motif avec IDMOTIF,NOM,QUANTITE

et je voudrais sortir la liste des deux en les classant par QUANTITE ou NOM par exemple.

MErci pour votre aide

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

14 août 2007, 17:17

Si tu veux les croiser, tu peux utiliser une simple jointure :

Code : Tout sélectionner

SELECT table1.champ1, table1.champ2, ... table2.champ1, ... FROM table1, table2 WHERE table1.champX = table2.champY ...
Si tu ne veux pas les croiser, il te faut faire deux requêtes...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 78 Messages

14 août 2007, 19:04

Les données n'ont rien à voir entre les deux tables donc je peux pas faire de jointure. Et les deux requêtes vont pas fonctionner pour mes filtres . Je vais modifier la structure des mes tables pour avoir des champs identiques tant pis.

Merci pour l'aide :wink:

ViPHP
ViPHP | 5924 Messages

14 août 2007, 23:31

Bah sinon, tu fais ca :

Code : Tout sélectionner

(SELECT IDVETEMENT,NOM,QUANTITE,COULEUR,TAILLE FROM vetement) UNION (SELECT IDMOTIF,NOM,QUANTITE,NULL,NULL FROM motif)

Eléphant du PHP | 78 Messages

14 août 2007, 23:51

Exact ,je savais pas qu'on pouvait faire comme ca avec UNION.

Merci :wink:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 août 2007, 00:18

euh... je vais poser une question bête mais... comment tu comptes faire ensuite pour savoir ce qui vient d'où ?

Tu me diras c'est peut être uniquement de l'affichage et y aura ni lien, ni formulaire ou autre, mais sinon je ne vois vraiment pas ensuite comment gérer un lien ou autre me disant id = 12 sans savoir si c'est celui d'un motif ou d'un vetement....
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 5924 Messages

15 août 2007, 00:20

Pour savoir d'où ca vient, c'est tout con :

Code : Tout sélectionner

(SELECT IDVETEMENT,NOM,QUANTITE,COULEUR,TAILLE, "vetement" AS Type FROM vetement) UNION (SELECT IDMOTIF,NOM,QUANTITE,NULL,NULL, "motif" FROM motif)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

15 août 2007, 00:31

oui, certes, on peut aussi simplement tester si couleur ou taille sont null ... mais à ce compte là, je vois pas l'intérêt d'un union qui à mon sens (j'ai pas vérifié mais j'imagine) sera plus couteux en ressource que deux requêtes distinctes, nottament parce qu'on pourra libérer les résultats de la première avant de passer à la seconde, et qu'on ne ramenera pas des colonnes inutiles de valeurs null...

'fin après c'est qu'une opinion tardive et je ne connais pas le contexte alors je vais pas insister, mais ce n'est pas à mon avis la meilleur façon de procéder :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 5924 Messages

15 août 2007, 00:56

Non, ce n'est peut être pas la meilleure facon de procéder, il faudra bencher pour savoir. Mais pour répondre à ta question, c'est juste que si on a deux requètes qu'il est particulièrement justifié d'unir :

Code : Tout sélectionner

SELECT nom FROM table1; SELECT nom FROM table2;
Alors il est très simple de les réunir sans s'emmeler les pinceaux :

Code : Tout sélectionner

(SELECT nom, 1 AS table FROM table1) UNION (SELECT nom, 2 FROM table2);
Après, dire ce qui est le mieux entre faire ceci et faire les 2 requètes séparément, c'est de la littérature, et c'est une autre affaire. :)

Eléphant du PHP | 78 Messages

15 août 2007, 01:46

Vous battez pas :lol: Pour mon cas un UNION est plus facile pour gérer ensuite le traitement des données. Effectivement c 'est plus gourmand en ressources mais ca reste largement acceptable vu le peu de données que je dois sortir :wink:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 août 2007, 12:28

... ca reste largement acceptable vu le peu de données que je dois sortir :wink:
C'est surtout en rapport du nombre de données à traiter avant de sortir un "peu de données"

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 78 Messages

15 août 2007, 13:09

Oui je me suis mal exprimé, j'ai pas beaucoup de données en base ( 20 -30 tout au plus) .