SQL JOIN + LIKE
Fermé
DAG
-
31 juil. 2008 à 12:11
almoal Messages postés 58 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 12 juin 2016 - 5 févr. 2010 à 12:01
almoal Messages postés 58 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 12 juin 2016 - 5 févr. 2010 à 12:01
A voir également:
- Sql join like
- Récupération serveur sql - Télécharger - Gestion de données
- Like instagram - Guide
- Like par erreur instagram - Forum Instagram
- Bug like tiktok - Forum TikTok
- Requête sql date supérieure à ✓ - Forum Programmation
13 réponses
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 384
31 juil. 2008 à 12:21
31 juil. 2008 à 12:21
Bonjour,
Si tu veux supprimer les espaces dans tes variables, tu peux utiliser l'instruction TRIM au lieu de LIKE, exemple
A plus
Si tu veux supprimer les espaces dans tes variables, tu peux utiliser l'instruction TRIM au lieu de LIKE, exemple
SELECT tabletampon_rh_file.UNITEDAFFAIRE, tabletampon_rh_file.LIBELLEUNITEDAFFAIRE, tabletampon_rh_file.ENTITEDEGESTIONEDG, tabletampon_rh_file.LIBELLEENTITEDEGESTIONEDG, tabletampon_rh_file.NATURECONTRATTRAVAILGROUPE, tabletampon_rh_file.MOTIFINACTIVITE, tabletampon_rh_file.ACTIF, tabletampon_rh_file.ALTERN, tabletampon_rh_file.NONACTIF FROM ouvrant_droit INNER JOIN tabletampon_rh_file ON (tabletampon_rh_file.PRENOMUSUEL = trim(ouvrant_droit.prenom_OD) AND tabletampon_rh_file.NOMUSUEL = trim(ouvrant_droit.nom_OD));
A plus
En fait les champs sont les mêmes sauf qu'il y a un espaces à la fin des données dans la table ouvrant_droit.prenom_OD et dans la table ouvrant_droit.nom_OD...
Du coup la requete du dessus ne retourne rien !
Il faudrait virer les espaces ou faire un LIKE...
Du coup la requete du dessus ne retourne rien !
Il faudrait virer les espaces ou faire un LIKE...
PRK
Messages postés
795
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
6 décembre 2015
113
31 juil. 2008 à 12:13
31 juil. 2008 à 12:13
il me semble que quand tu fais un LIKE dans une requete ^^
Ce qui suit doit etre precedé ou suivis de %% pour indiquer si ce que tu as fixé est en debut de mot ou en fin de mot ou au milieu..
Il faudrait que je revois mes cours pour en etre sur...
Ce qui suit doit etre precedé ou suivis de %% pour indiquer si ce que tu as fixé est en debut de mot ou en fin de mot ou au milieu..
Il faudrait que je revois mes cours pour en etre sur...
Oui oui il faut un % % genre SELECT * FROM matable WHERE donnee LIKE '%data%';
Mais moi je voudrais savoir si c'est possible d'utiliser LIKE avec le type de requete que je veux faire ?
Mais moi je voudrais savoir si c'est possible d'utiliser LIKE avec le type de requete que je veux faire ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
PRK
Messages postés
795
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
6 décembre 2015
113
31 juil. 2008 à 12:20
31 juil. 2008 à 12:20
Ce que je trouve etrange c'est que tu veut faire une condition mais il n'y a pas de WHERE ~~ et ton ON je vois pas a quoi il pourrait correspondre..
PRK
Messages postés
795
Date d'inscription
mardi 4 septembre 2007
Statut
Membre
Dernière intervention
6 décembre 2015
113
31 juil. 2008 à 12:21
31 juil. 2008 à 12:21
laisse tomber pour le ON j'avias mal lu
OK
Mais je veux supprimer les espace juste en fin de ligne.
je vais essayer.
Merci
Mais je veux supprimer les espace juste en fin de ligne.
je vais essayer.
Merci
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 384
31 juil. 2008 à 13:52
31 juil. 2008 à 13:52
Bonjour,
En fait l'instruction TRIM enlèves les espaces au début et à la fin de la variable, l'instruction LTRIM enlèves les espaces au début et l'instruction RTRIM enlèves les espaces en fin de variable, exemple
A plus
En fait l'instruction TRIM enlèves les espaces au début et à la fin de la variable, l'instruction LTRIM enlèves les espaces au début et l'instruction RTRIM enlèves les espaces en fin de variable, exemple
variable = ' Ceci est un test ' TRIM(variable) sera égal à 'Ceci est un test' LTRIM(variable) sera égal à 'Ceci est un test ' RTRIM(variable) sera égal à ' Ceci est un test'
A plus
C'est bizarre ma requête ne marche pas avec TRIM, LTRIM ou RTRIM !
J'ai pourtant bien le mêmes infos dans :
tabletampon_rh_file.PRENOMUSUEL et dans
et aussi dans tabletampon_rh_file.NOMUSUEL et dans
N'y aurait-il pas des caractères "cachés" que MySQL rajoute ou autre ? Je ne comprend vraiment pas.
Je résume :
- J'ai une table tabletampon_rh_file dans laquelle j'ai un champs PRENOMUSUEL et un autre NOMUSUEL et d'autre champs.
- J'ai une autre table ouvrant_droit dans laquelle on retrouve les champs nom_OD ainsi que prenom_OD et d'autres infos.
Je voudrais récupérer toutes les infos de la table tabletampon_rh_file ou les champs PRENOMUSUEL et NOMUSUEL sont identiques aux champs nom_OD et prenom_OD de la table ouvrant_droit. (sachant que dans cette dernière table, il y a un espace apres la valeur du champs)...
Je pensais utiliser la bonne requête...
Quelqu'un verrait ou est le problème ?
J'ai pourtant bien le mêmes infos dans :
tabletampon_rh_file.PRENOMUSUEL et dans
ouvrant_droit.prenom_OD
et aussi dans tabletampon_rh_file.NOMUSUEL et dans
ouvrant_droit.nom_OD
N'y aurait-il pas des caractères "cachés" que MySQL rajoute ou autre ? Je ne comprend vraiment pas.
Je résume :
- J'ai une table tabletampon_rh_file dans laquelle j'ai un champs PRENOMUSUEL et un autre NOMUSUEL et d'autre champs.
- J'ai une autre table ouvrant_droit dans laquelle on retrouve les champs nom_OD ainsi que prenom_OD et d'autres infos.
Je voudrais récupérer toutes les infos de la table tabletampon_rh_file ou les champs PRENOMUSUEL et NOMUSUEL sont identiques aux champs nom_OD et prenom_OD de la table ouvrant_droit. (sachant que dans cette dernière table, il y a un espace apres la valeur du champs)...
Je pensais utiliser la bonne requête...
Quelqu'un verrait ou est le problème ?
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 384
31 juil. 2008 à 14:19
31 juil. 2008 à 14:19
Bonjour,
Ne devrais-tu pas inverser l'ordre de tes deux tables dans le INNER JOIN
A plus
Ne devrais-tu pas inverser l'ordre de tes deux tables dans le INNER JOIN
FROM tabletampon_rh_file INNER JOIN ouvrant_droitou bien inverser le ON
ON (trim(ouvrant_droit.prenom_OD) = tabletampon_rh_file.PRENOMUSUEL AND trim(ouvrant_droit.nom_OD) = tabletampon_rh_file.NOMUSUEL)
A plus
Je ne comprend pas trop le sens de INNER JOIN ? Comment ça marche ? Il a un sens pour faire sa jointure ?
ah, je ne comprend rien, j'ai beau le triturer dans tous les sens, il ne veux rien savoir ! Il ne me ramène aucun résultats !
Je me demande ça ne vient pas de mon code PHP que ne rentre pas bien les bonne données dans la table.
Voici le code qui rempli la table
Je me demande ça ne vient pas de mon code PHP que ne rentre pas bien les bonne données dans la table.
Voici le code qui rempli la table
ouvrant_droit:
$statementOne = "SELECT CIVILITE, NOM, PRENOM, DATEDENAISSANCE, DATEENTREESOCIETE, ADRESSEPERSO, CPPERSO, VILLEPERSO, MAILPERSO, MAILPRO, TRANCHEDEQF FROM tabletampon_od_file;"; $req = mysql_query($statementOne) or die('<br>Erreur base de donnée !<br>'.$statementOne.'<br>'.mysql_error()); while ($data = mysql_fetch_array($req)) { echo $statementTwo = " INSERT INTO OUVRANT_DROIT ( civilite_OD, nom_OD, prenom_OD, date_naissance_OD, date_entree_societe_OD, adresse_perso_OD, code_postal_OD, ville_perso_OD, mail_perso_OD, mail_prof_OD, tranche_QF ) VALUES ( \"$data[CIVILITE]\",\"$data[NOM]\",\"$data[PRENOM]\",\"$data[DATEDENAISSANCE]\",\"$data[DATEENTREESOCIETE]\",\"$data[ADRESSEPERSO]\",\"$data[CPPERSO]\",\"$data[VILLEPERSO]\",\"$data[MAILPERSO]\",\"$data[MAILPRO]\",\"$data[TRANCHEDEQF]\" ); ";
Christounet
Messages postés
1264
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
29 juillet 2010
1 384
31 juil. 2008 à 14:43
31 juil. 2008 à 14:43
Bonjour,
L'instruction INNER JOIN retourne les enregistrements lorsque chaque table contient des valeurs identiques pour les champs indiqués dans le ON. Tu trouveras ici plus d'informations sur les jointures (INNNER JOIN, LEFTJOIN et RIGHT JOIN).
Si par exemple, tu as dans ta table tabletampon_rh_file un enregistrement contenant un prénom ou un nom n'existant pas dans ta table ouvrant_droit, l'INNER JOIN ne retournera pas cet enregistrement.
Je pense que l'ordre du ON doit suivre l'ordre des tables.
A plus
L'instruction INNER JOIN retourne les enregistrements lorsque chaque table contient des valeurs identiques pour les champs indiqués dans le ON. Tu trouveras ici plus d'informations sur les jointures (INNNER JOIN, LEFTJOIN et RIGHT JOIN).
Si par exemple, tu as dans ta table tabletampon_rh_file un enregistrement contenant un prénom ou un nom n'existant pas dans ta table ouvrant_droit, l'INNER JOIN ne retournera pas cet enregistrement.
Je pense que l'ordre du ON doit suivre l'ordre des tables.
A plus
almoal
Messages postés
58
Date d'inscription
lundi 28 janvier 2008
Statut
Membre
Dernière intervention
12 juin 2016
69
5 févr. 2010 à 12:01
5 févr. 2010 à 12:01
tabletampon_rh_file.PRENOMUSUEL LIKE '%'+ouvrant_droit.prenom_OD+'%' AND tabletampon_rh_file.NOMUSUEL LIKE '%'+ouvrant_droit.nom_OD+'%'
marchera mieux je pense
marchera mieux je pense