Jointure MySQL - SQL/NoSQL - Programmation
Marsh Posté le 24-03-2006 à 15:34:11
ça fait quoi dans la partie PHP ?
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 ^^
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...
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 ^^
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
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
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
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é.
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.
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. |
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
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. |
ha je savais bien que j'étais une tache en SQL
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
Message édité par the_bigboo le 24-03-2006 à 16:10:58