jointure entres tables avec même nom de champs

jointure entres tables avec même nom de champs - SQL/NoSQL - Programmation

Marsh Posté le 23-11-2006 à 10:01:02    

Voila,
 
je fais une jointure entres deux tables avec des champs de mêmes nom!!
je m'explique
 
table fruit : champs "nom"
table bonbon : champs "nom"
donc ma requete :  
 
select * from fruit F JOIN bonbon b ON F.id = b.id_bonbon where f.type = b.type
 
sauf que si je veux afficher le "nom" de bonbon, c'est systematiquement celui de fruit qui s'affiche car ces deux tables ont un champs nom...

Reply

Marsh Posté le 23-11-2006 à 10:01:02   

Reply

Marsh Posté le 23-11-2006 à 10:52:30    

tu dois absolument préfixer les champs avec le nom de la table dont ils proviennent

Reply

Marsh Posté le 23-11-2006 à 10:59:11    

c'est ce que j'ai fait par exemple ma requete c'est $resultat :  
je fait $resultat['F.nom'] ou $resultat['B.nom'] ne me renvoi rien...

Reply

Marsh Posté le 23-11-2006 à 11:00:40    

aaah oui je comprend ce que tu veux dir je devrais changer les nom de mes champs par exemple, le champs nom de bonbon deviendrait bonbon_nom .. c ça ?

Reply

Marsh Posté le 23-11-2006 à 11:06:35    

en fait quand tu fais un select *, il va prendre tous champs.  Le problème est que tu as 2 champs d'un même nom.
 
Donc à la place de *, il faut que tu mets par exemple:
 
select bonbon.nom, fruit.nom,..... from .....

Reply

Marsh Posté le 23-11-2006 à 11:14:39    

ahhhhhhh ok!!!  beaucoup ;-)

Reply

Marsh Posté le 23-11-2006 à 11:14:58    

oups zapé le MERCI avant le beaucoup

Reply

Marsh Posté le 23-11-2006 à 11:31:07    

hum juste, je tape une requete avec un LIMIT

Code :
  1. $requete = "SELECT * FROM where $critere NOTNULL ORDER BY $critere LIMIT ($from, $limit_par_page) ";


 
me renvoie :  
 
argument of LIMIT must be type integer, not type record
pourtant quand j'affiche la valauer de $from, $limit_par_page j'ai bien 0,10 ???
je pige pas ...
sinon un limit tout bête avec comme valeur par exemple 10 ça marche...

Reply

Marsh Posté le 23-11-2006 à 11:37:46    

retire les () déja...

Reply

Marsh Posté le 23-11-2006 à 11:45:26    

déjà fait et même resultats :-((

Reply

Marsh Posté le 23-11-2006 à 11:45:26   

Reply

Marsh Posté le 23-11-2006 à 11:46:26    

et la le message d erreur change ,j'ai  
LIMIT #,# syntax is not supported HINT: Use separate LIMIT and OFFSET clauses

Reply

Marsh Posté le 23-11-2006 à 11:56:08    

la je sèche

Reply

Marsh Posté le 23-11-2006 à 12:12:01    

moi aussi :-((( mais c bizzard  
quand je met LIMIT $limit_par_page OFFSET $from ça marche, pourtant un simple LIMIT $from, $limit_par_page   devrait marcher bref, je vais faire comme ça mais c strange!!!

Reply

Marsh Posté le 23-11-2006 à 12:14:37    

oui mais tu as quoi comme db? cela peut venir de la aussi

Reply

Marsh Posté le 24-11-2006 à 11:12:40    

PostgreSQl... peut être que ça vient de la alors... d'habitude j'utilise mysql

Reply

Marsh Posté le 24-11-2006 à 13:11:43    

c'est donc ça, c'est ce que j'ai vu sur le net

Reply

Marsh Posté le 25-11-2006 à 12:33:00    

Oui, vu aussi.
pleins de petites choses comme ça qui change... pas top au debut quand on sait pas!!!
 
par contre j'ai toujours le soucis des champs de même nom
en faisant un
 
select bonbon.nom, fruit.nom from bonbon JOIN fruit ON blablabla...
 
un $resultat['fruit.nom'] ne renvoi rien et un $resultat['nom'] renvoi systematiquement le nom de bonbon :-((((  
alors la je vois pas comment differencier les deux noms ... est ce qu'il faut un autre truc que JOIN pour les champs de même noms dans deux tables differentes... je regarde sur le net et je ne vois pas de cas comme le mien car il donne systematiquement des exemples avec des champs de noms differents... pourtant ce cas doit bien exister C sûr...

Reply

Marsh Posté le 25-11-2006 à 12:43:23    

mouais a priori un  
 

Code :
  1. fruit.nom as fruit_nom


 
devrait marcher pour faire la difference... à priori... je vais tester ça... et donnerai la réponse ici si ça interresse d autre!!!

Reply

Marsh Posté le 25-11-2006 à 12:54:05    

et bien OUI un simple AS règle touut... pfff!!

Reply

Sujets relatifs:

Leave a Replay

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