Jointure MySQL

Jointure MySQL - SQL/NoSQL - Programmation

Marsh Posté le 24-03-2006 à 14:46:32    

Coucou , j'ai un p'tit probleme de jointure : J'ai deux tables la premiere que j'apelerai A, contient un 'account_id' champ qui fait référence au champ autoincrémenté de la table que j'appelerai B... En fait , je cherche a faire une jointure, qui me permettrai d'extraire tous les enregistrement de la table A dont le champ unique serait précisé dans la clause WHERE , mais qui m'extrairait aussi le champ 'value' de la table B dont la valeur de account_id serait celle trouvé dans les enregistrement de la table A
 
SELECT A.*,B.value As value FROM accounting As A, item As B WHERE A.item_id ='12' AND B.account_id = A.account_id_id
 
Cette requete ne m'affiche rien du tout hélas... :/ J'ai pris 12 pour l'exemple car j'ai fait la base avec 12 dans l'exemple... Pourriez vous m'expliquer SVP ?
Merci beaucoup de votr aide :jap:


Message édité par the_bigboo le 24-03-2006 à 16:10:58
Reply

Marsh Posté le 24-03-2006 à 14:46:32   

Reply

Marsh Posté le 24-03-2006 à 15:34:11    

ça fait quoi dans la partie PHP ? :D
 
Ca serait pas B.account_id = A.account_id a la fin de ta requete ? (au lieu de B.account_id = A.account_id_id)
 
enfin je demande au cas où quoi ^^

Reply

Marsh Posté le 24-03-2006 à 15:35:26    

ben c'est une egalité , je ne pense pas qu'il y a it d'importance...
La requete que tu vois est celle telle qu'elle est envoyée au serveur...

Reply

Marsh Posté le 24-03-2006 à 15:36:51    

non mais je demande si tu as bien un champ appelé "account_id_id" dans ta table accouting, et non un champ "account_id".
 
M'enfin c'est une question conne, t'aurais un message d'erreur dans ce cas. Mais je préfère etre sur ^^

Reply

Marsh Posté le 24-03-2006 à 15:38:05    

erreur de saisie de ma part, nan c'est account_id tout court , le serveur ne renvoi pas d'erreur :D

Reply

Marsh Posté le 24-03-2006 à 15:40:48    

vu que ta requete est correcte, c'est soit que "account_id" n'est pas renseigné pour cet enregistrement dans la table accounting (valeur nulle), soit que cette valeur n'existe pas dans le champ "account_id" de la table item.
 
Et ça n'a toujours rien à faire en cat PHP  ;)

Reply

Marsh Posté le 24-03-2006 à 15:55:59    

si car l'appel se fait en PHP, et que le traiement aussi, d'ailleur, il doit surement y avoir moyen de bien l'optimiser

Reply

Marsh Posté le 24-03-2006 à 15:58:51    

que l'appel se fasse en PHP, ça n'a rien à voir, d'ailleurs tu vois, tu n'as meme pas besoin d'y faire mention dans ton probleme ;)
 
et je voie pas ou intervient un traitement en PHP là ^^
 
Sinon le problème vient bien de ce que je t'ai proposé ? Et pour optimiser ta requête, commence par viré le A.*, faire un select * c'est peu optimisé, en plus si tu recupes tes donnes avec mysql_fetch_row et que la structure de ta table change, la résultat de la requete sera planté.


Message édité par Djebel1 le 24-03-2006 à 16:00:51
Reply

Marsh Posté le 24-03-2006 à 16:05:22    

the_bigboo a écrit :

si car l'appel se fait en PHP, et que le traiement aussi, d'ailleur, il doit surement y avoir moyen de bien l'optimiser


Pour optimiser commence par faire un INNER JOIN plutôt que ton SELECT avec plusieurs table, c'est atrocement moche.
Un WHERE sert à filtrer, pas à faire des jointures.
 
Quand ça sera dans la bonne cat, je répondrais.

Reply

Marsh Posté le 24-03-2006 à 16:09:41    

smaragdus a écrit :

Pour optimiser commence par faire un INNER JOIN plutôt que ton SELECT avec plusieurs table, c'est atrocement moche.
Un WHERE sert à filtrer, pas à faire des jointures.
 
Quand ça sera dans la bonne cat, je répondrais.


oui, j'ai donc essayé :  
SELECT *
FROM accounting
LEFT JOIN item ON item.account_id = accounting.account_id
WHERE accounting.enterprise_id =12
LIMIT 0 , 30
 
Sans meilleur résultat :/

Reply

Marsh Posté le 24-03-2006 à 16:09:41   

Reply

Marsh Posté le 24-03-2006 à 16:11:12    

smaragdus a écrit :

Pour optimiser commence par faire un INNER JOIN plutôt que ton SELECT avec plusieurs table, c'est atrocement moche.
Un WHERE sert à filtrer, pas à faire des jointures.


ha je savais bien que j'étais une tache en SQL  :whistle:

Reply

Marsh Posté le 24-03-2006 à 16:11:14    

Voila c'est changé ;)

Reply

Sujets relatifs:

Leave a Replay

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