A voir également:
- SQL 2 tables
- Tables des matières word - Guide
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- Tables ascii - Guide
- France 2 uhd - Accueil - TV & Vidéo
5 réponses
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 389
11 sept. 2008 à 14:59
11 sept. 2008 à 14:59
Bonjour,
Dans ton ordre INNER JOIN, tu n'as pas mis une condition, je pense que l'ordre devrait être le suivant
Je pense également que tu dois aussi sélectionné une variable de ta table USERS pour pouvoir la mettre à jour, le mieux étant ce qui rend chaque utilisateur unique (clé primaire).
A plus
Dans ton ordre INNER JOIN, tu n'as pas mis une condition, je pense que l'ordre devrait être le suivant
SELECT t2.secteur FROM (users AS t1 INNER JOIN secteur AS t2 ON t1.adresse_pro_OD = t2.rue)
Je pense également que tu dois aussi sélectionné une variable de ta table USERS pour pouvoir la mettre à jour, le mieux étant ce qui rend chaque utilisateur unique (clé primaire).
A plus
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 389
15 sept. 2008 à 11:09
15 sept. 2008 à 11:09
Bonjour,
Désolé pour la réponse tardive, j'étais à l'étranger.
Concernant ta question, je ne pense pas qu'il soit possible de faire un INNER JOIN avec un LIKE, tu peux peut-être faire le suivant
Cela te donnera tous les utilisateurs dont le secteur est vide et ensuite pour chaque record tu peux faire le suivant
Cela devrait te donner le secteur ou les secteurs car je suppose qu'il peut avoir plus d'une fois le même nom de rue dans ta table secteur.
Tu peux peut-être aussi essayer le code suivant
Cela va comparé la partie gauche de adress_pro_OD sur un nombre de caractères égal au nombre de caractères des rues de ta table secteur. A toi de voir
A plus
Désolé pour la réponse tardive, j'étais à l'étranger.
Concernant ta question, je ne pense pas qu'il soit possible de faire un INNER JOIN avec un LIKE, tu peux peut-être faire le suivant
SELECT t1.ID, t1.nom_OD, t1.prenom_OD, t1.adresse_pro_OD from users as t1 where t1.secteur = ' '
Cela te donnera tous les utilisateurs dont le secteur est vide et ensuite pour chaque record tu peux faire le suivant
SELECT t2.secteur from secteur as t2 where t1.adresse_pro_OD like '%'||t2.rue||'%'
Cela devrait te donner le secteur ou les secteurs car je suppose qu'il peut avoir plus d'une fois le même nom de rue dans ta table secteur.
Tu peux peut-être aussi essayer le code suivant
SELECT t1.ID, t1.nom_OD, t1.prenom_OD, t1.adresse_pro_OD, t2.rue, t2.secteur FROM users AS t1 INNER JOIN secteur AS t2 ON left(t1.adresse_pro_OD,length(t2.rue)) = t2.rue
Cela va comparé la partie gauche de adress_pro_OD sur un nombre de caractères égal au nombre de caractères des rues de ta table secteur. A toi de voir
A plus
Merci pour ta réponse.
En fait je pensais aussi que ça pourrait marcher, mais comment faire pour mettre le LIKE ?
Car je suis confronté à un autre probleme :
- Le champs t1.adresse_pro_OD est formé de la façon suivante : nom_de_rue + code postal + ville. Le tout dans le même champs de ma base... J'ai pas le choix, c'est comme ça !
- Et le champs t2.rue ne contient que le nom de la rue...
J'essaie donc de retrouver le nom de la rue t2.rue dans le champs t1.adresse_pro_OD...
Je ne sais pas si tu aurai une idée ? Elel serait la bien venue !! (Il est peut être aussi possible de le faire dans le code, je code en PHP)
A+
En fait je pensais aussi que ça pourrait marcher, mais comment faire pour mettre le LIKE ?
Car je suis confronté à un autre probleme :
- Le champs t1.adresse_pro_OD est formé de la façon suivante : nom_de_rue + code postal + ville. Le tout dans le même champs de ma base... J'ai pas le choix, c'est comme ça !
- Et le champs t2.rue ne contient que le nom de la rue...
J'essaie donc de retrouver le nom de la rue t2.rue dans le champs t1.adresse_pro_OD...
Je ne sais pas si tu aurai une idée ? Elel serait la bien venue !! (Il est peut être aussi possible de le faire dans le code, je code en PHP)
A+
Rah je me suis trompé ! J'avais laissé le "=" devant le LIKE ! Désolé !
Mais sinon ça ne marche toujours pas !
En faisant comme ça :
Il me ressort (en peu de temps !) environs 98 000 linges... Alors que je n'est qu'enivrons 5000 utilisateurs...
Je ne comprend pas !
Merci de m'indiquer si tu as une idée !?
Mais sinon ça ne marche toujours pas !
En faisant comme ça :
SELECT t1.ID, t1.nom_OD, t1.prenom_OD, t1.adresse_pro_OD, t2.rue, t2.secteur FROM (users AS t1 INNER JOIN secteur AS t2 ON t1.adresse_pro_OD LIKE '%'||t2.rue||'%')
Il me ressort (en peu de temps !) environs 98 000 linges... Alors que je n'est qu'enivrons 5000 utilisateurs...
Je ne comprend pas !
Merci de m'indiquer si tu as une idée !?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ça maaaaarche ! Merci beaucoup !! Vraiment !
ça fait plusieurs jours que j'étais sur cette requête (que je ne trouve pas évidente du tout !), et je ne suis pas super à l'aise avec SQL ! Je ne connaissais pas l'utilisation de length.
En fait ça marche avec la deuxième méthode que tu m'as donnée. La première ne marche pas, en plus je crois l'avoir déjà testée. Il me ressort plein de choses erronnées. Par contre avec :
ça marche impeccable !
Merci encore !
A+
ça fait plusieurs jours que j'étais sur cette requête (que je ne trouve pas évidente du tout !), et je ne suis pas super à l'aise avec SQL ! Je ne connaissais pas l'utilisation de length.
En fait ça marche avec la deuxième méthode que tu m'as donnée. La première ne marche pas, en plus je crois l'avoir déjà testée. Il me ressort plein de choses erronnées. Par contre avec :
SELECT t1.ID, t1.nom_OD, t1.prenom_OD, t1.adresse_pro_OD, t2.rue, t2.secteur FROM users AS t1 INNER JOIN secteur AS t2 ON left(t1.adresse_pro_OD,length(t2.rue)) = t2.rue
ça marche impeccable !
Merci encore !
A+