|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 220 ![]() |
Bonjour tout le monde,
Contexte de la bizarie : 2 tables sous MySql : -cmd_contenu et MagParAffilie 1 champs servant de jointure présent dans les 2 tables : -idMag (varchar(9) dans les 2 tables PRIMARY KEY) ma requete : SELECT * FROM MagParAffilie M, cmd_contenu C WHERE M.idMag = C.idMag => no data retourned Là déjà très bizare je trouve étant donné qu'il y'a au moins 200 idMag pareils dans les 2 tables. Ensuite, si je vais dans phpmyadmin, je clic pour modifier une occurence de ma table MagParAffilie (par exemple l'occurence dont l'idMag est '36273') je la modifie même pas, juste sur "valider", et bein si je refais la requête plus haut il me sort la ligne dont l'idMag est '36273'... Paranormal ? ![]() Merci à ceux qui m'ont lu et un ENORME merci à ceux qui pourront m'aider En tout cas, très bon week end !! |
|
|
00
|
|
|
#2 |
|
Membre expérimenté
![]() Inscription : septembre 2006 Messages : 685 ![]() |
Tente de faire une réparation de tes tables, je vois que ça.
|
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 220 ![]() |
Salut Xunil et merci bien pour la réponse !
Comment on fait ce genre d'opération ? j'en ai jamais entendu parler pour tout te dire... Merci. |
|
|
00
|
|
|
#4 |
|
Membre expérimenté
![]() Inscription : septembre 2006 Messages : 685 ![]() |
Une simple requête :
http://dev.mysql.com/doc/refman/5.0/...air-table.html phpMyAdmin fournit cette option. |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 220 ![]() |
Voilà, je viens de réparer mes tables mais ma jointure ne fonctionne toujours pas...
Avez-vous d'autres idées, car je ne sais plus vers quel saint me vouer... Merci et bonne semaine ! |
|
|
00
|
|
|
#6 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Question toute bête : les 2 colonnes de la jointure ont bien le même type (une explication serait qu'une chaîne de caractères a des espaces à la fin et l'autre pas, par exemple) ?
Autre piste : écrire la jointure dans sa version standard SQL-99, avec un INNER JOIN. Quelle est la version de MySQL ? ced |
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 220 ![]() |
Oui, elles sont du même type, (varchar 11 toutes les deux), j'ai testé avec l'agrégat INNER JOIN mais idem...
J'ai vérifié également s'il y avait un espace en trop dans l'un des deux champs mais non !! C'est fou ça quand même !! Pour info, la version de MySql est 5.0.18 |
|
|
00
|
|
|
#8 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Et les deux tables sont encodées dans les mêmes jeux de caractères ?
Si les codes sont numériques, il faudrait essayer en convertissant les champs des deux tables en entiers, pour voir ce que ça donne. ced |
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 220 ![]() |
Les 2 tables sont bien encodés de la même manière, j'ai mis les deux champs idMag en int(8) et ça marche...
Mais le souci est que je ne pas garder ce type de format car certains de mes idMag sont : '05363' par exemple, le '0' ne passe donc pas... |
|
|
00
|
|
|
#10 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Ca confirme quand même qu'il y a un problème au niveau d'un des deux champs en chaîne de caractères...
On progresse Essaie maintenant en mettant UPPER(M.idMag) = UPPER(C.idMag), pour voir... ced |
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 220 ![]() |
Non... toujours pareil
En faite la table qui pose problème est MagParAffilie car si j'edit l'une des lignes de cette table, celle-ci apparait alors dans ma jointure (alors que je n'ai rien modifié) Cette table est rempli à l'aide de la fonction LOAD DATA... qui permet de remplire une table avec un fichier texte. |
|
|
00
|
|
|
#12 | ||
|
Membre expérimenté
![]() Inscription : septembre 2006 Messages : 685 ![]() |
Il n'y aurait pas par hasard des espaces dans tes champs ?
Code sql :
|
||
|
|
00
|
|
|
#13 | ||
|
Membre du Club
![]() Inscription : juin 2005 Messages : 220 ![]() |
Bien vu, mais hélas ça ne marche toujours pas, par contre quand je fais un
Code :
SELECT * FROM MagParAffilie WHERE idMag = '38273' Code :
SELECT * FROM MagParAffilie WHERE idMag = 38273 Mon champ est pourtant bien en varchar... comme je le disais plus haut, il est alimenté à l'aide de la fonction LOAD DATA LOCAL INFILE : Code en PHP : Code :
|
||
|
|
00
|
|
|
#14 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Alors ta colonne n'est pas en varchar ?
Pour résoudre le problème, il faut caster en entier... ced |
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 220 ![]() |
Si justement.... ma colonne est bien en varchar(9)... Mais les données sont vus comme des entiers (au vu de la requête évoquée dans mon précédent post).
Comment on "caste en entier" ? Merci pour votre implication en tout cas !! |
|
|
00
|
|
|
#16 | |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Citation:
Tu peux aussi caster en chaîne de caractères (tu as le choix). ced |
|
|
|
00
|
|
|
#17 |
|
Membre du Club
![]() Inscription : juin 2005 Messages : 220 ![]() |
Ho lala... Dans la logique des choses je me suis dis que ça allait marcher, mais non !
Déjà un exemple tout simple : Code :
SELECT * FROM MagParAffilie WHERE idMag = cast('93101' AS int) Code :
SELECT * FROM cmd_contenu WHERE idMag = cast(93101 AS char) Code :
SELECT * FROM cmd_contenu C, MagParAffilie M WHERE cast(M.idMag AS char) = C.idMag |
|
|
00
|
|
|
#18 |
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Essaie en castant des deux côtés de la jointure, et en précisant une longueur de char (char(5) si tous les id font 5 en longueur).
ced |
|
|
00
|
|
|
#19 | ||
|
Membre du Club
![]() Inscription : juin 2005 Messages : 220 ![]() |
Toujours pareil en faite :
Code :
|
||
|
|
00
|
|
|
#20 |
|
Membre chevronné
![]() Inscription : avril 2006 Messages : 833 ![]() |
Je prend la discussion en cours juste pour verifier :
chez moi rien que ça ça ne marche pas ça marche chez vous ? moi je fais peut etre ça aidera |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com