Bonjour
Je travaille sur une base MySQL 4.1 et je n'arrive toujours pas à gérer ca
cas:
Je veux récupérer les TVA avec leurs comptes débit et crédit. Bien entendu,
je dois lire toutes les TVA même si les comptes ne sont pas renseignés.
J'ai essayé avec la requete suivante, sans succès (erreur 1064)
select
LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva
left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT,
tva as tvabis left join cptplan as cre and cre.IDCPTPLAN =
tvabis.IDCPTCREDIT
where
OBSOLETE = 0
order by
NUMTVA
la table TVA a la structure suivante:
NUMTVA tinyint
IDCPTDEBIT smallinit // Pointeur compte débit
IDCPTCREDIT smallint // Pointeur compte crédit
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Firetox
Bonjour,
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT, left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
devrait mieu fonctionné tu part de tva et tu fait 2 jointures sur compte 1 pour deb et l'autre credit puisque tva a Les 2 infos et que tu veux toutes les tva c'est la table de depart
Bon dev @+
Firetox
"I.G.LOG" a écrit dans le message de news: 48ce9994$0$869$
Bonjour Je travaille sur une base MySQL 4.1 et je n'arrive toujours pas à gérer ca cas: Je veux récupérer les TVA avec leurs comptes débit et crédit. Bien entendu, je dois lire toutes les TVA même si les comptes ne sont pas renseignés. J'ai essayé avec la requete suivante, sans succès (erreur 1064)
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT, tva as tvabis left join cptplan as cre and cre.IDCPTPLAN = tvabis.IDCPTCREDIT where OBSOLETE = 0 order by NUMTVA
la table TVA a la structure suivante:
NUMTVA tinyint IDCPTDEBIT smallinit // Pointeur compte débit IDCPTCREDIT smallint // Pointeur compte crédit
la table COMPTE :
IDCOMPTE smallinit NUMCOMPTE varchar(11)
Merci beaucoup
Bonjour,
select
LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva
left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT,
left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where
OBSOLETE = 0
order by
NUMTVA
devrait mieu fonctionné
tu part de tva et tu fait 2 jointures sur compte 1 pour deb et l'autre
credit
puisque tva a Les 2 infos et que tu veux toutes les tva c'est la table de
depart
Bon dev
@+
Firetox
"I.G.LOG" <iglog@free.fr> a écrit dans le message de news:
48ce9994$0$869$ba4acef3@news.orange.fr...
Bonjour
Je travaille sur une base MySQL 4.1 et je n'arrive toujours pas à gérer ca
cas:
Je veux récupérer les TVA avec leurs comptes débit et crédit. Bien
entendu, je dois lire toutes les TVA même si les comptes ne sont pas
renseignés.
J'ai essayé avec la requete suivante, sans succès (erreur 1064)
select
LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva
left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT,
tva as tvabis left join cptplan as cre and cre.IDCPTPLAN =
tvabis.IDCPTCREDIT
where
OBSOLETE = 0
order by
NUMTVA
la table TVA a la structure suivante:
NUMTVA tinyint
IDCPTDEBIT smallinit // Pointeur compte débit
IDCPTCREDIT smallint // Pointeur compte crédit
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT, left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
devrait mieu fonctionné tu part de tva et tu fait 2 jointures sur compte 1 pour deb et l'autre credit puisque tva a Les 2 infos et que tu veux toutes les tva c'est la table de depart
Bon dev @+
Firetox
"I.G.LOG" a écrit dans le message de news: 48ce9994$0$869$
Bonjour Je travaille sur une base MySQL 4.1 et je n'arrive toujours pas à gérer ca cas: Je veux récupérer les TVA avec leurs comptes débit et crédit. Bien entendu, je dois lire toutes les TVA même si les comptes ne sont pas renseignés. J'ai essayé avec la requete suivante, sans succès (erreur 1064)
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT, tva as tvabis left join cptplan as cre and cre.IDCPTPLAN = tvabis.IDCPTCREDIT where OBSOLETE = 0 order by NUMTVA
la table TVA a la structure suivante:
NUMTVA tinyint IDCPTDEBIT smallinit // Pointeur compte débit IDCPTCREDIT smallint // Pointeur compte crédit
la table COMPTE :
IDCOMPTE smallinit NUMCOMPTE varchar(11)
Merci beaucoup
I.G.LOG
"Firetox" a écrit dans le message de news: 48ce9e5a$0$3881$
Bonjour,
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT, left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
Ben non, j'ai essayé ca plante à l'exécution avec la même erreur 1064 sur le 2eme left join
"Firetox" <firetox@SQLManagerX.com> a écrit dans le message de news:
48ce9e5a$0$3881$426a74cc@news.free.fr...
Bonjour,
select
LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva
left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT,
left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where
OBSOLETE = 0
order by
NUMTVA
Ben non, j'ai essayé ca plante à l'exécution avec la même erreur 1064 sur le
2eme left join
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
est la bonne requete
"I.G.LOG" a écrit dans le message de news: 48cea196$0$964$
"Firetox" a écrit dans le message de news: 48ce9e5a$0$3881$
Bonjour,
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT, left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
Ben non, j'ai essayé ca plante à l'exécution avec la même erreur 1064 sur le 2eme left join
I.G.LOG
"Firetox" a écrit dans le message de news: 48cea4cb$0$11223$
oui il y a une virgule en trop
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
est la bonne requete
Ca fonctionne en MySQL 5, malheureusement pas en 4.1. J'ai jonglé avec des alias et jointures "compliquées" et là ca marche. voici la requete:
SELECT tva.LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,tva.NUMTVA FROM tva left join cptplan as DEB on DEB.IDCPTPLAN = tva.IDCPTDEBIT, tva as tvabis left join cptplan as CRE on CRE.IDCPTPLAN = tvabis.IDCPTCREDIT where tva.numtva = tvabis.numtva and tva.obsolete = 0
heureusement que j'ai un identifiant unique sur TVA. sinon ca ne serait pas gérable. Je crois que la version 5 a revu pas mal de choses au niveau de jointures multiples, notamment pour régler ce genre de problème (pourtant simple)
Encore un grand merci à toi pour ton aide Bon dev Phil
"Firetox" <firetox@SQLManagerX.com> a écrit dans le message de news:
48cea4cb$0$11223$426a74cc@news.free.fr...
oui il y a une virgule en trop
select
LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva
left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT
left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where
OBSOLETE = 0
order by
NUMTVA
est la bonne requete
Ca fonctionne en MySQL 5, malheureusement pas en 4.1. J'ai jonglé avec des
alias et jointures "compliquées" et là ca marche. voici la requete:
SELECT tva.LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as
CPTDEBIT,tva.NUMTVA
FROM
tva left join cptplan as DEB on DEB.IDCPTPLAN = tva.IDCPTDEBIT,
tva as tvabis left join cptplan as CRE on CRE.IDCPTPLAN = tvabis.IDCPTCREDIT
where
tva.numtva = tvabis.numtva
and tva.obsolete = 0
heureusement que j'ai un identifiant unique sur TVA. sinon ca ne serait pas
gérable.
Je crois que la version 5 a revu pas mal de choses au niveau de jointures
multiples, notamment pour régler ce genre de problème (pourtant simple)
Encore un grand merci à toi pour ton aide
Bon dev
Phil
"Firetox" a écrit dans le message de news: 48cea4cb$0$11223$
oui il y a une virgule en trop
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
est la bonne requete
Ca fonctionne en MySQL 5, malheureusement pas en 4.1. J'ai jonglé avec des alias et jointures "compliquées" et là ca marche. voici la requete:
SELECT tva.LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,tva.NUMTVA FROM tva left join cptplan as DEB on DEB.IDCPTPLAN = tva.IDCPTDEBIT, tva as tvabis left join cptplan as CRE on CRE.IDCPTPLAN = tvabis.IDCPTCREDIT where tva.numtva = tvabis.numtva and tva.obsolete = 0
heureusement que j'ai un identifiant unique sur TVA. sinon ca ne serait pas gérable. Je crois que la version 5 a revu pas mal de choses au niveau de jointures multiples, notamment pour régler ce genre de problème (pourtant simple)
Encore un grand merci à toi pour ton aide Bon dev Phil
Firetox
la tu m"etonne mais il y avait une erreur dans la requete j'utilise ce genre de jointure depuis mySQL 3.26 et cela a toujours fonctionner jusqu'a la version .5.1 par contre la syntaxe using est un peu perturber en 5 c'est la seule chose qu'on avait vu et des requetes compliquée on en a des tonnes (j'en ai fait qui faisait 19 000 ligne !! construite dynamiquement
voici ta requete et elle doit fonctionner
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
si ca ne fonctionne pas sous windev essaye quand meme avec un frontal comme SQLyog
"I.G.LOG" a écrit dans le message de news: 48cea7a6$0$908$
"Firetox" a écrit dans le message de news: 48cea4cb$0$11223$
oui il y a une virgule en trop
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
est la bonne requete
Ca fonctionne en MySQL 5, malheureusement pas en 4.1. J'ai jonglé avec des alias et jointures "compliquées" et là ca marche. voici la requete:
SELECT tva.LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,tva.NUMTVA FROM tva left join cptplan as DEB on DEB.IDCPTPLAN = tva.IDCPTDEBIT, tva as tvabis left join cptplan as CRE on CRE.IDCPTPLAN = tvabis.IDCPTCREDIT where tva.numtva = tvabis.numtva and tva.obsolete = 0
heureusement que j'ai un identifiant unique sur TVA. sinon ca ne serait pas gérable. Je crois que la version 5 a revu pas mal de choses au niveau de jointures multiples, notamment pour régler ce genre de problème (pourtant simple)
Encore un grand merci à toi pour ton aide Bon dev Phil
la tu m"etonne mais il y avait une erreur dans la requete
j'utilise ce genre de jointure depuis mySQL 3.26 et cela a toujours
fonctionner jusqu'a la version .5.1
par contre la syntaxe using est un peu perturber en 5 c'est la seule chose
qu'on avait vu et des requetes compliquée on en a des tonnes (j'en ai fait
qui faisait 19 000 ligne !! construite dynamiquement
voici ta requete et elle doit fonctionner
select
LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva
left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT
left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where
OBSOLETE = 0
order by
NUMTVA
si ca ne fonctionne pas sous windev essaye quand meme avec un frontal comme
SQLyog
"I.G.LOG" <iglog@free.fr> a écrit dans le message de news:
48cea7a6$0$908$ba4acef3@news.orange.fr...
"Firetox" <firetox@SQLManagerX.com> a écrit dans le message de news:
48cea4cb$0$11223$426a74cc@news.free.fr...
oui il y a une virgule en trop
select
LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva
left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT
left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where
OBSOLETE = 0
order by
NUMTVA
est la bonne requete
Ca fonctionne en MySQL 5, malheureusement pas en 4.1. J'ai jonglé avec des
alias et jointures "compliquées" et là ca marche. voici la requete:
SELECT tva.LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as
CPTDEBIT,tva.NUMTVA
FROM
tva left join cptplan as DEB on DEB.IDCPTPLAN = tva.IDCPTDEBIT,
tva as tvabis left join cptplan as CRE on CRE.IDCPTPLAN =
tvabis.IDCPTCREDIT
where
tva.numtva = tvabis.numtva
and tva.obsolete = 0
heureusement que j'ai un identifiant unique sur TVA. sinon ca ne serait
pas gérable.
Je crois que la version 5 a revu pas mal de choses au niveau de jointures
multiples, notamment pour régler ce genre de problème (pourtant simple)
Encore un grand merci à toi pour ton aide
Bon dev
Phil
la tu m"etonne mais il y avait une erreur dans la requete j'utilise ce genre de jointure depuis mySQL 3.26 et cela a toujours fonctionner jusqu'a la version .5.1 par contre la syntaxe using est un peu perturber en 5 c'est la seule chose qu'on avait vu et des requetes compliquée on en a des tonnes (j'en ai fait qui faisait 19 000 ligne !! construite dynamiquement
voici ta requete et elle doit fonctionner
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
si ca ne fonctionne pas sous windev essaye quand meme avec un frontal comme SQLyog
"I.G.LOG" a écrit dans le message de news: 48cea7a6$0$908$
"Firetox" a écrit dans le message de news: 48cea4cb$0$11223$
oui il y a une virgule en trop
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb on deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre and cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
est la bonne requete
Ca fonctionne en MySQL 5, malheureusement pas en 4.1. J'ai jonglé avec des alias et jointures "compliquées" et là ca marche. voici la requete:
SELECT tva.LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,tva.NUMTVA FROM tva left join cptplan as DEB on DEB.IDCPTPLAN = tva.IDCPTDEBIT, tva as tvabis left join cptplan as CRE on CRE.IDCPTPLAN = tvabis.IDCPTCREDIT where tva.numtva = tvabis.numtva and tva.obsolete = 0
heureusement que j'ai un identifiant unique sur TVA. sinon ca ne serait pas gérable. Je crois que la version 5 a revu pas mal de choses au niveau de jointures multiples, notamment pour régler ce genre de problème (pourtant simple)
Encore un grand merci à toi pour ton aide Bon dev Phil
I.G.LOG
> select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !? Pourtant j'étais persuadé qu'en 4.1 le second left join s'appliquait sur le 1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu une évolution sur ces syntaxes avec la version 5 de MySQL.
Puis-je faire une jointure en cascade, du genre:
select * from tva left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
??
>
select
LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva
left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT
left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where
OBSOLETE = 0
order by
NUMTVA
je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal en
ayant avec les deux l'erreur 1064. Mais maintenant ça marche !?
Pourtant j'étais persuadé qu'en 4.1 le second left join s'appliquait sur le
1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu une
évolution sur ces syntaxes avec la version 5 de MySQL.
Puis-je faire une jointure en cascade, du genre:
select *
from tva
left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT
left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
> select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !? Pourtant j'étais persuadé qu'en 4.1 le second left join s'appliquait sur le 1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu une évolution sur ces syntaxes avec la version 5 de MySQL.
Puis-je faire une jointure en cascade, du genre:
select * from tva left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
??
Firetox
> je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !?
il y avait une erreur sur la requete : la derniere est bonne
1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu une évolution sur ces syntaxes avec la version 5 de MySQL.
c'est vrai avec la syntaxe using ou on definit la cle du join mais la nature (nomtable.nomcolonne = nomtable2.nomColonne) la syntaxe using permet d'ecrire des choses comme ca
select From matable left join matable2 using (macle) left join matable3 using (macle2)
la les left join sont cascade matable sur matable2 sur matable3 si on veut table sur matable2 et matable sur matable3 il faut passer par le ON
select From matable left join matable2 ON matable.macolonne = matable2.macolonne left join matable3 ON matable.macolonne = matable3.macolonne
par contre en 5 il n'est pas possible de melanger les 2 syntaxes using et on car le moteur est un peu perdu onne peut pas avoir :
select From matable left join matable2 using (macle) left join matable3 ON matable.macolonne = matable3.macolonne
il faut tout passer en ON
voila
Bon dev @+
"I.G.LOG" a écrit dans le message de news: 48ceb59c$0$870$
>
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !? Pourtant j'étais persuadé qu'en 4.1 le second left join s'appliquait sur le 1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu une évolution sur ces syntaxes avec la version 5 de MySQL.
Puis-je faire une jointure en cascade, du genre:
select * from tva left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
??
> je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal
en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !?
il y avait une erreur sur la requete : la derniere est bonne
1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu
une évolution sur ces syntaxes avec la version 5 de MySQL.
c'est vrai avec la syntaxe using ou on definit la cle du join mais la nature
(nomtable.nomcolonne = nomtable2.nomColonne)
la syntaxe using permet d'ecrire des choses comme ca
select
From matable
left join matable2 using (macle)
left join matable3 using (macle2)
la les left join sont cascade matable sur matable2 sur matable3
si on veut table sur matable2 et matable sur matable3 il faut passer par le
ON
select
From matable
left join matable2 ON matable.macolonne = matable2.macolonne
left join matable3 ON matable.macolonne = matable3.macolonne
par contre en 5 il n'est pas possible de melanger les 2 syntaxes using et on
car le moteur est un peu perdu
onne peut pas avoir :
select
From matable
left join matable2 using (macle)
left join matable3 ON matable.macolonne = matable3.macolonne
il faut tout passer en ON
voila
Bon dev
@+
"I.G.LOG" <iglog@free.fr> a écrit dans le message de news:
48ceb59c$0$870$ba4acef3@news.orange.fr...
>
select
LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva
left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT
left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where
OBSOLETE = 0
order by
NUMTVA
je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal
en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !?
Pourtant j'étais persuadé qu'en 4.1 le second left join s'appliquait sur
le 1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu
une évolution sur ces syntaxes avec la version 5 de MySQL.
Puis-je faire une jointure en cascade, du genre:
select *
from tva
left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT
left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
> je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !?
il y avait une erreur sur la requete : la derniere est bonne
1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu une évolution sur ces syntaxes avec la version 5 de MySQL.
c'est vrai avec la syntaxe using ou on definit la cle du join mais la nature (nomtable.nomcolonne = nomtable2.nomColonne) la syntaxe using permet d'ecrire des choses comme ca
select From matable left join matable2 using (macle) left join matable3 using (macle2)
la les left join sont cascade matable sur matable2 sur matable3 si on veut table sur matable2 et matable sur matable3 il faut passer par le ON
select From matable left join matable2 ON matable.macolonne = matable2.macolonne left join matable3 ON matable.macolonne = matable3.macolonne
par contre en 5 il n'est pas possible de melanger les 2 syntaxes using et on car le moteur est un peu perdu onne peut pas avoir :
select From matable left join matable2 using (macle) left join matable3 ON matable.macolonne = matable3.macolonne
il faut tout passer en ON
voila
Bon dev @+
"I.G.LOG" a écrit dans le message de news: 48ceb59c$0$870$
>
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !? Pourtant j'étais persuadé qu'en 4.1 le second left join s'appliquait sur le 1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu une évolution sur ces syntaxes avec la version 5 de MySQL.
Puis-je faire une jointure en cascade, du genre:
select * from tva left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
??
Firetox
bien entendu avec le message precedent tu te doute de la reponse
select * from tva left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
??
oui bien sur et le ON permet tout les jointure que tu veux cascade ou non le using n'est plus utilisé et comme il pose probleme depuis la 5 je ne l'utilise plus (en plus sur SQLServer le ON est compris aussi : ta requete fonctionnerait sur SQLserver)
Bon dev @+
"I.G.LOG" a écrit dans le message de news: 48ceb59c$0$870$
>
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !? Pourtant j'étais persuadé qu'en 4.1 le second left join s'appliquait sur le 1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu une évolution sur ces syntaxes avec la version 5 de MySQL.
Puis-je faire une jointure en cascade, du genre:
select * from tva left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
??
bien entendu avec le message precedent tu te doute de la reponse
select *
from tva
left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT
left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
??
oui bien sur et le ON permet tout les jointure que tu veux cascade ou non
le using n'est plus utilisé et comme il pose probleme depuis la 5 je ne
l'utilise plus
(en plus sur SQLServer le ON est compris aussi : ta requete fonctionnerait
sur SQLserver)
Bon dev
@+
"I.G.LOG" <iglog@free.fr> a écrit dans le message de news:
48ceb59c$0$870$ba4acef3@news.orange.fr...
>
select
LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva
left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT
left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where
OBSOLETE = 0
order by
NUMTVA
je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal
en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !?
Pourtant j'étais persuadé qu'en 4.1 le second left join s'appliquait sur
le 1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu
une évolution sur ces syntaxes avec la version 5 de MySQL.
Puis-je faire une jointure en cascade, du genre:
select *
from tva
left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT
left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
bien entendu avec le message precedent tu te doute de la reponse
select * from tva left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT left join autretable on autretable.IDENT = cptplan.IDCPTPLAN
??
oui bien sur et le ON permet tout les jointure que tu veux cascade ou non le using n'est plus utilisé et comme il pose probleme depuis la 5 je ne l'utilise plus (en plus sur SQLServer le ON est compris aussi : ta requete fonctionnerait sur SQLserver)
Bon dev @+
"I.G.LOG" a écrit dans le message de news: 48ceb59c$0$870$
>
select LIBELLET,deb.COMPTE as CPTCREDIT,cre.COMPTE as CPTDEBIT,NUMTVA
from tva left join cptplan as deb ON deb.IDCPTPLAN = tva.IDCPTDEBIT left join cptplan as cre ON cre.IDCPTPLAN = tva.IDCPTCREDIT
where OBSOLETE = 0
order by NUMTVA
je n'y comprend plus rien, j'avais essayé sous Windev et avec un frontal en ayant avec les deux l'erreur 1064. Mais maintenant ça marche !? Pourtant j'étais persuadé qu'en 4.1 le second left join s'appliquait sur le 1er join, ici cptplan (au lieu de tva) ?!! Il me semblait même avoir vu une évolution sur ces syntaxes avec la version 5 de MySQL.
Puis-je faire une jointure en cascade, du genre:
select * from tva left join cptplan on cptplan.IDCPTPLAN = tva.IDCPTDEBIT left join autretable on autretable.IDENT = cptplan.IDCPTPLAN