Pb sql left outer join
Résolu
florence
-
colt -
colt -
Bonjour,
je voudrais extraire les enregistrements de la table cli + 2 champs de la table tmp_devis si ceux ci existent (null sinon)
ma joiture se fait sur 3 champs (scodsoc, scodagc, scodcli)
Ma requete est la suivante mais j'ai toujours sql error
select
cli.scodsoc,
cli.scodagc,
cli.scodcli,
cli.sdescli,
cli.svil,
tmp_devis.date_devis,
tmp_devis.nb_devis
from
LEFT OUTER JOIN tmp_devis ON
cli.scodsoc=tmp_devis.scodsoc and
cli.scodagc=tmp_devis.scodagc and
cli.scodcli=tmp_devis.scodcli
;
Merci
je voudrais extraire les enregistrements de la table cli + 2 champs de la table tmp_devis si ceux ci existent (null sinon)
ma joiture se fait sur 3 champs (scodsoc, scodagc, scodcli)
Ma requete est la suivante mais j'ai toujours sql error
select
cli.scodsoc,
cli.scodagc,
cli.scodcli,
cli.sdescli,
cli.svil,
tmp_devis.date_devis,
tmp_devis.nb_devis
from
LEFT OUTER JOIN tmp_devis ON
cli.scodsoc=tmp_devis.scodsoc and
cli.scodagc=tmp_devis.scodagc and
cli.scodcli=tmp_devis.scodcli
;
Merci
A voir également:
- Pb sql left outer join
- Logiciel sql - Télécharger - Bases de données
- Join pdf - Télécharger - PDF
- Left shift clavier ✓ - Forum Jeux vidéo
- Sql lister les tables ✓ - Forum Programmation
- Requête sql pix - Forum Python
12 réponses
Bonjour Florence,
Voici ce que devrait être ta requête :
select
c.scodsoc,
c.scodagc,
c.scodcli,
c.sdescli,
c.svil,
d.date_devis,
d.nb_devis
from cli c, tmp_devis d
LEFT OUTER JOIN tmp_devis d ON
d.scodsoc=c.scodsoc and
d.scodagc=c.scodagc and
d.scodcli=c.scodcli
;
En principe, ce devrait être correct. Mais, comme il y a deux ans que je ne l'ai plus fait, alors, si j'ai fait une erreur, pardonne moi.
Georges
Voici ce que devrait être ta requête :
select
c.scodsoc,
c.scodagc,
c.scodcli,
c.sdescli,
c.svil,
d.date_devis,
d.nb_devis
from cli c, tmp_devis d
LEFT OUTER JOIN tmp_devis d ON
d.scodsoc=c.scodsoc and
d.scodagc=c.scodagc and
d.scodcli=c.scodcli
;
En principe, ce devrait être correct. Mais, comme il y a deux ans que je ne l'ai plus fait, alors, si j'ai fait une erreur, pardonne moi.
Georges
Florence, ça m'irrite que ça ne marche pas.
On va recommencer mais sans la close left outer join.
Essaie ceci pour contrôler la requête:
SELECT
c.scodsoc,
c.scodagc,
c.scodcli,
c.sdescli,
c.svil,
d.date_devis,
d.nb_devis
FROM cli c, tmp_devis d
WHERE
d.scodsoc=c.scodsoc and
d.scodagc=c.scodagc and
d.scodcli=c.scodcli;
Fais l'essai par un copier-coller.
Merci
Georges
On va recommencer mais sans la close left outer join.
Essaie ceci pour contrôler la requête:
SELECT
c.scodsoc,
c.scodagc,
c.scodcli,
c.sdescli,
c.svil,
d.date_devis,
d.nb_devis
FROM cli c, tmp_devis d
WHERE
d.scodsoc=c.scodsoc and
d.scodagc=c.scodagc and
d.scodcli=c.scodcli;
Fais l'essai par un copier-coller.
Merci
Georges
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
On va recommencer mais sans la close left outer join.
Il faut lire :On va recommencer mais sans la clause left outer join.
Il faut lire :On va recommencer mais sans la clause left outer join.
Merci de ton aide. Cela me rassure, je ne suis pas la seule à bloquer :-)
cela me donne bien les enreg présent dans les 2 tables
Si je fais cela, cela marche mais les temps de réponse ne sont pas top top
select
c.scodsoc,
c.scodagc,
c.scodcli,
c.sdescli,
c.svil,
(select d.date_devis||';'||d.nb_devis from tmp_devis d
where d.scodsoc=c.scodsoc and d.scodagc=c.scodagc and d.scodcli=c.scodcli)
from
cli c
cela me donne bien les enreg présent dans les 2 tables
Si je fais cela, cela marche mais les temps de réponse ne sont pas top top
select
c.scodsoc,
c.scodagc,
c.scodcli,
c.sdescli,
c.svil,
(select d.date_devis||';'||d.nb_devis from tmp_devis d
where d.scodsoc=c.scodsoc and d.scodagc=c.scodagc and d.scodcli=c.scodcli)
from
cli c
Excuse moi, mais, je suis terriblement têtu.
Veux-tu bien faire un copier-coller de ma syntaxe.
Merci
Georges.
PS. J'adore les bases de données. (C'est vrai).
Veux-tu bien faire un copier-coller de ma syntaxe.
Merci
Georges.
PS. J'adore les bases de données. (C'est vrai).
C'est ce que j'ai fais et cela m'a ramené que les enreg présents dans les 2 tables mais pas ceux qui existe que dans cli.
D'accord, mais cela me permet de vérifier que ma requête fonctionne et que je n'ai plus d'erreur.
Maintenant, on va essayer d'affiner.
Essaie (toujours par copier/coller)
SELECT
c.scodsoc,
c.scodagc,
c.scodcli,
c.sdescli,
c.svil,
d.date_devis,
d.nb_devis
FROM cli c, tmp_devis d
LEFT OUTER JOIN c on
c.scodsoc=d.scodsoc and
c.scodagc=d.scodagc and
c.d.scodcli=d.scodcli;
Merci
Maintenant, on va essayer d'affiner.
Essaie (toujours par copier/coller)
SELECT
c.scodsoc,
c.scodagc,
c.scodcli,
c.sdescli,
c.svil,
d.date_devis,
d.nb_devis
FROM cli c, tmp_devis d
LEFT OUTER JOIN c on
c.scodsoc=d.scodsoc and
c.scodagc=d.scodagc and
c.d.scodcli=d.scodcli;
Merci
c.scodsoc,
c.scodagc,
c.scodcli,
c.sdescli,
c.svil,
d.date_devis,
d.nb_devis
from cli c
LEFT OUTER JOIN tmp_devis d ON
c.scodsoc=d.scodsoc and
c.scodagc=d.scodagc and
c.scodcli=d.scodcli
;
Il s'agit d'un jointure à gauche. En gros, tu vas extraire tous les valeurs communes aux 2 tables + les valeurs qui sont dans la table de gauche (cli) mais dans la table de droite (tmp_devis). C'était juste la répartition de tes tables qui n'étaient pas correcte. <table1> LEFT OUTER JOIN <table 2>