Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/09/2011, 10h25   #1
Membre confirmé
 
Avatar de mouss4rs
 
Inscription : janvier 2008
Messages : 762
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 762
Points : 250
Points : 250
Par défaut Plusieurs jointures dans une requête

Bonjour,

J'ai une requete qui utilise plusieurs tables et le problème c'est qu'on m'avait déjà dit que le fait de faire des jointures avec les "and " ca crée des problèmes.
Résultat: ma requete n'affiche rien.

Que faut il faire dans ces cas la ? des requetes imbriquées, des jointure interne, jointure externe ?

Merci d'avance

voici ma requete en question:

Code :
1
2
3
4
5
6
7
8
-------------------------------- nb: la table asistante commerciale à été retiré (d'après Dara). seul le code assistance est affiché------------------------------------------
SELECT tc.cli_code, tc.cli_raison_soc, tc.CLI_ADR_COD_POST, tc.CLI_ADR_VILLE, p.pay_libelle, tc.cli_siret, u.uti_nom, u.uti_prenom, pr.prov_regroupement, tcc.uti_code_assistante
FROM t_client tc, t_client_commerciaux tcc, utilisateur u, provenance pr, t_provenance_teris_client tptc, pays p
WHERE tcc.COM_CODE = u.UTI_CODE ---jointure pour les clients commerciaux
AND tc.cli_code = tptc.CLI_CODE ---
AND tptc.CODE_PROV_INTERNE = pr.CODE_PROV_INTERNE ---jointure pour la provenance
AND tc.pay_code NOT LIKE 100 --exclure le code 100 qui est la france
AND prov_regroupement LIKE 'PVE';
mouss4rs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 10h48   #2
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 092
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 092
Points : 1 898
Points : 1 898
Bonjour,
Je ne vois pas pourquoi plusieurs jointures avec des critères de restriction poseraient des problèmes...

En réécrivant ta requête, on y verra plus clair:
Code SQL :
1
2
3
4
5
6
7
8
9
10
 
SELECT tc.cli_code, tc.cli_raison_soc, tc.CLI_ADR_COD_POST, tc.CLI_ADR_VILLE, p.pay_libelle, tc.cli_siret, u.uti_nom, u.uti_prenom, pr.prov_regroupement, tcc.uti_code_assistante
FROM t_client tc
INNER JOIN t_client_commerciaux tcc
INNER JOIN utilisateur u ON tcc.COM_CODE = u.UTI_CODE 
INNER JOIN provenance pr ON tptc.CODE_PROV_INTERNE = pr.CODE_PROV_INTERNE
INNER JOIN t_provenance_teris_client tptc ON tc.cli_code = tptc.CLI_CODE
INNER JOIN pays p
WHERE tc.pay_code NOT LIKE 100 --exclure le code 100 qui est la france
AND prov_regroupement LIKE 'PVE';

On peut voir par exemple que la jointure sur le pays n'est pas complète...

Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/09/2011, 10h56   #3
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Citation:
J'ai une requete qui utilise plusieurs tables et le problème c'est qu'on m'avait déjà dit que le fait de faire des jointures avec les "and " ca crée des problèmes.
Ah bon !!! c'est vrai que c'est toujours la faute du SGBD, jamais de l'humain derrière


* Déjà, ce serait plus judicieux d'utiliser la norme SQL pour les jointures...

* De regarder les règles de fonctionnement du forum (notamment fournir la structure des tables).


Que ta requête ne renvoie aucun résultat, je ne vois pas le problème si elle ne doit rien renvoyer !

Sur la requête elle-même, je vois un truc curieux :
Citation:
tc.pay_code NOT LIKE 100
LIKE ne fonctionne sur des chaines pas des nombres. Si le 100 est une chaine, cela devrait être
Code :
tc.pay_code NOT LIKE '100'
(Mais pourquoi typer des nombres en chaine ???)

et si 100 est effectivement un nombre, la syntaxe serait
Citation:
tc.pay_code <> 100
dehorter olivier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h36   #4
Membre confirmé
 
Avatar de mouss4rs
 
Inscription : janvier 2008
Messages : 762
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 762
Points : 250
Points : 250
tatayo j'ai une erreur avec ta requete : ORA-00905: missing keyword

toad surbrille le where.


merci olivier je prend note du like.
mouss4rs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h41   #5
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
il ne vous manquerait pas un petit quelque chose ici
?

Bon courage
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h46   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
En plus, concernant le LIKE : LIKE 'quelque chose' est équivalent à = 'quelque chose' !
LIKE n'a d'utilité que s'il est utilisé avec le caractère générique %.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h56   #7
Membre confirmé
 
Avatar de mouss4rs
 
Inscription : janvier 2008
Messages : 762
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 762
Points : 250
Points : 250
merci yanika_bzh mais j'ai toujours l'erreur missing keyword
mouss4rs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 11h59   #8
Membre Expert
 
Homme
Responsable de service informatique
Inscription : janvier 2009
Messages : 1 092
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Responsable de service informatique
Secteur : Boutique - Magasin

Informations forums :
Inscription : janvier 2009
Messages : 1 092
Points : 1 898
Points : 1 898
Citation:
Envoyé par mouss4rs Voir le message
tatayo j'ai une erreur avec ta requete : ORA-00905: missing keyword

toad surbrille le where.

Citation:
Envoyé par tatayo Voir le message
Bonjour,

...
On peux voir par exemple que la jointure sur le pays n'est pas complète...

Tatayo.
Tatayo.
tatayo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h35   #9
Membre confirmé
 
Avatar de mouss4rs
 
Inscription : janvier 2008
Messages : 762
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 762
Points : 250
Points : 250
c'est bon, j'ai trouvé !
c'était un autre problème en faite.

J'aimerai bien avoir un cours sur les INNER JOIN, OUTER JOIN, LEFT... s'il y'en a un a me proposer car j'ai du mal a en trouver un de bien concernant oracle.

merci encore
mouss4rs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 14h44   #10
Membre émérite
 
Homme Olivier Dehorter
Ingenieur de recherche - Ecologue
Inscription : juin 2003
Messages : 697
Détails du profil
Informations personnelles :
Nom : Homme Olivier Dehorter
Localisation : France

Informations professionnelles :
Activité : Ingenieur de recherche - Ecologue

Informations forums :
Inscription : juin 2003
Messages : 697
Points : 837
Points : 837
Les jointures sont assez normatives, regardes ce petit-papier de SQLPro.

Je ne crois pas qu'il y ait des spécificités "Oracle", non ?
dehorter olivier est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2011, 15h19   #11
Membre confirmé
 
Avatar de mouss4rs
 
Inscription : janvier 2008
Messages : 762
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 762
Points : 250
Points : 250
merci il ma l'air bien.
mouss4rs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h13.


 
 
 
 
Partenaires

Hébergement Web