Bonjour
Je vous expose mon pb: J'ai deux tables TB1 et TB2 qui sont li=E9es par
un champ dont les donn=E9es sont communes. (avec VB6)
Je peux cr=E9er une requ=EAte selection rendant des champs des 2 tables:
sql=3D"select TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB2, TB1,
TB1 INNER JOIN TB2 on TB1.champ2=3DTB2.champ2"
Ceci me rend un tableau dans lequel je trouve,lorsqu'il y a plusieurs
champ2 identiques dans TB2, des lignes de TB1 reprises.
Ceci est normal.
Voil=E0 ma question, Comment exprimer la requ=EAte pour que je n'ai
qu'une liaison unique (la premi=E8re rencontr=E9e par exemple).
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
Salut,
En SQL tu as la notion de "GROUP BY". Cette instruction permet de regrouper les enregistrements. Pour les autres champs (ce que tu veux une seule fois mais uniquement le premier), il y a l'opération "first".
Exemple : sql="select First(TB1.champ1),TB1.champ2,First(TB2.champ1) from TB2, TB1, TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2 GROUP BY TB1.champ2 "
A la place de First, tu peux aussi utiliser Last, Min, Max, etc.
J'espère que celà répond à ton attente. -Thierry-
"jpw" a écrit dans le message de news: Bonjour Je vous expose mon pb: J'ai deux tables TB1 et TB2 qui sont liées par un champ dont les données sont communes. (avec VB6) Je peux créer une requête selection rendant des champs des 2 tables: sql="select TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB2, TB1, TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2" Ceci me rend un tableau dans lequel je trouve,lorsqu'il y a plusieurs champ2 identiques dans TB2, des lignes de TB1 reprises. Ceci est normal. Voilà ma question, Comment exprimer la requête pour que je n'ai qu'une liaison unique (la première rencontrée par exemple).
Salut,
En SQL tu as la notion de "GROUP BY". Cette instruction permet de regrouper
les enregistrements. Pour les autres champs (ce que tu veux une seule fois
mais uniquement le premier), il y a l'opération "first".
Exemple :
sql="select First(TB1.champ1),TB1.champ2,First(TB2.champ1) from TB2, TB1,
TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2
GROUP BY TB1.champ2 "
A la place de First, tu peux aussi utiliser Last, Min, Max, etc.
J'espère que celà répond à ton attente.
-Thierry-
"jpw" <jp.witz@wanadoo.fr> a écrit dans le message de
news:1156687142.202188.152720@m73g2000cwd.googlegroups.com...
Bonjour
Je vous expose mon pb: J'ai deux tables TB1 et TB2 qui sont liées par
un champ dont les données sont communes. (avec VB6)
Je peux créer une requête selection rendant des champs des 2 tables:
sql="select TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB2, TB1,
TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2"
Ceci me rend un tableau dans lequel je trouve,lorsqu'il y a plusieurs
champ2 identiques dans TB2, des lignes de TB1 reprises.
Ceci est normal.
Voilà ma question, Comment exprimer la requête pour que je n'ai
qu'une liaison unique (la première rencontrée par exemple).
En SQL tu as la notion de "GROUP BY". Cette instruction permet de regrouper les enregistrements. Pour les autres champs (ce que tu veux une seule fois mais uniquement le premier), il y a l'opération "first".
Exemple : sql="select First(TB1.champ1),TB1.champ2,First(TB2.champ1) from TB2, TB1, TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2 GROUP BY TB1.champ2 "
A la place de First, tu peux aussi utiliser Last, Min, Max, etc.
J'espère que celà répond à ton attente. -Thierry-
"jpw" a écrit dans le message de news: Bonjour Je vous expose mon pb: J'ai deux tables TB1 et TB2 qui sont liées par un champ dont les données sont communes. (avec VB6) Je peux créer une requête selection rendant des champs des 2 tables: sql="select TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB2, TB1, TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2" Ceci me rend un tableau dans lequel je trouve,lorsqu'il y a plusieurs champ2 identiques dans TB2, des lignes de TB1 reprises. Ceci est normal. Voilà ma question, Comment exprimer la requête pour que je n'ai qu'une liaison unique (la première rencontrée par exemple).
SAISAS
Bonjour,
normalement le code
sql="select DISTINCT TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2"
devrait faire l'affaire ...
PS : as tu testé ton code SQL, j'ai l'impression qu'il est faux (?!).
"jpw" a écrit :
Bonjour Je vous expose mon pb: J'ai deux tables TB1 et TB2 qui sont liées par un champ dont les données sont communes. (avec VB6) Je peux créer une requête selection rendant des champs des 2 tables: sql="select TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB2, TB1, TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2" Ceci me rend un tableau dans lequel je trouve,lorsqu'il y a plusieurs champ2 identiques dans TB2, des lignes de TB1 reprises. Ceci est normal. Voilà ma question, Comment exprimer la requête pour que je n'ai qu'une liaison unique (la première rencontrée par exemple).
Bonjour,
normalement le code
sql="select DISTINCT TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB1
INNER JOIN TB2 on TB1.champ2=TB2.champ2"
devrait faire l'affaire ...
PS : as tu testé ton code SQL, j'ai l'impression qu'il est faux (?!).
"jpw" a écrit :
Bonjour
Je vous expose mon pb: J'ai deux tables TB1 et TB2 qui sont liées par
un champ dont les données sont communes. (avec VB6)
Je peux créer une requête selection rendant des champs des 2 tables:
sql="select TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB2, TB1,
TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2"
Ceci me rend un tableau dans lequel je trouve,lorsqu'il y a plusieurs
champ2 identiques dans TB2, des lignes de TB1 reprises.
Ceci est normal.
Voilà ma question, Comment exprimer la requête pour que je n'ai
qu'une liaison unique (la première rencontrée par exemple).
sql="select DISTINCT TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2"
devrait faire l'affaire ...
PS : as tu testé ton code SQL, j'ai l'impression qu'il est faux (?!).
"jpw" a écrit :
Bonjour Je vous expose mon pb: J'ai deux tables TB1 et TB2 qui sont liées par un champ dont les données sont communes. (avec VB6) Je peux créer une requête selection rendant des champs des 2 tables: sql="select TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB2, TB1, TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2" Ceci me rend un tableau dans lequel je trouve,lorsqu'il y a plusieurs champ2 identiques dans TB2, des lignes de TB1 reprises. Ceci est normal. Voilà ma question, Comment exprimer la requête pour que je n'ai qu'une liaison unique (la première rencontrée par exemple).
Le problème avec le distinck, c'est qu'il aura toujours tous les enregistrements. D'apres ce que j'ai compris, il veut qu'un seul enregistrement par champ2, mais avec la première valeur trouvée pour les autres champs.
"SAISAS" a écrit dans le message de news:
Bonjour,
normalement le code
sql="select DISTINCT TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2"
devrait faire l'affaire ...
PS : as tu testé ton code SQL, j'ai l'impression qu'il est faux (?!).
"jpw" a écrit :
> Bonjour > Je vous expose mon pb: J'ai deux tables TB1 et TB2 qui sont liées par > un champ dont les données sont communes. (avec VB6) > Je peux créer une requête selection rendant des champs des 2 tables: > sql="select TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB2, TB1, > TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2" > Ceci me rend un tableau dans lequel je trouve,lorsqu'il y a plusieurs > champ2 identiques dans TB2, des lignes de TB1 reprises. > Ceci est normal. > Voilà ma question, Comment exprimer la requête pour que je n'ai > qu'une liaison unique (la première rencontrée par exemple). > >
Le problème avec le distinck, c'est qu'il aura toujours tous les
enregistrements. D'apres ce que j'ai compris, il veut qu'un seul
enregistrement par champ2, mais avec la première valeur trouvée pour les
autres champs.
"SAISAS" <SAISAS@discussions.microsoft.com> a écrit dans le message de
news:B895A6C3-30D5-45FD-B2B6-B6D4BC5560A3@microsoft.com...
Bonjour,
normalement le code
sql="select DISTINCT TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB1
INNER JOIN TB2 on TB1.champ2=TB2.champ2"
devrait faire l'affaire ...
PS : as tu testé ton code SQL, j'ai l'impression qu'il est faux (?!).
"jpw" a écrit :
> Bonjour
> Je vous expose mon pb: J'ai deux tables TB1 et TB2 qui sont liées par
> un champ dont les données sont communes. (avec VB6)
> Je peux créer une requête selection rendant des champs des 2 tables:
> sql="select TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB2, TB1,
> TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2"
> Ceci me rend un tableau dans lequel je trouve,lorsqu'il y a plusieurs
> champ2 identiques dans TB2, des lignes de TB1 reprises.
> Ceci est normal.
> Voilà ma question, Comment exprimer la requête pour que je n'ai
> qu'une liaison unique (la première rencontrée par exemple).
>
>
Le problème avec le distinck, c'est qu'il aura toujours tous les enregistrements. D'apres ce que j'ai compris, il veut qu'un seul enregistrement par champ2, mais avec la première valeur trouvée pour les autres champs.
"SAISAS" a écrit dans le message de news:
Bonjour,
normalement le code
sql="select DISTINCT TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2"
devrait faire l'affaire ...
PS : as tu testé ton code SQL, j'ai l'impression qu'il est faux (?!).
"jpw" a écrit :
> Bonjour > Je vous expose mon pb: J'ai deux tables TB1 et TB2 qui sont liées par > un champ dont les données sont communes. (avec VB6) > Je peux créer une requête selection rendant des champs des 2 tables: > sql="select TB1.champ1,TB1.champ2,TB2.champ1,TB2.champ2 from TB2, TB1, > TB1 INNER JOIN TB2 on TB1.champ2=TB2.champ2" > Ceci me rend un tableau dans lequel je trouve,lorsqu'il y a plusieurs > champ2 identiques dans TB2, des lignes de TB1 reprises. > Ceci est normal. > Voilà ma question, Comment exprimer la requête pour que je n'ai > qu'une liaison unique (la première rencontrée par exemple). > >