zazadec
Messages postés31Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention30 juin 2008
-
21 janv. 2008 à 23:34
zazadec
Messages postés31Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention30 juin 2008
-
30 juin 2008 à 13:25
Question de se compliquer la vie, je dois reprendre un site avec une bdd déjà existante... bref vous avez compris j'ai pas le choix.
2 tables T1 et T2 avec un 'id' en commun (ces 2 champs 'id' sont en INDEX)
Plusieurs champs (au total 30) dont un dans chaque table qui doit normalement me simplifier la vie, et me virer les enregistrements non voulus (puisque index). Appelons les x et y
Comment relier les 2 select pour ne faire qu'une seule requête.
SELECT id, x, a, b FROM T1 WHERE x = "";
SELECT id, y, c, d FROM T2 WHERE y = "";
J'ai essayé SELECT T1.id, T1.a, T1.b, T2.c, T2.d FROM T1, T2 WHERE T1.id T2.id AND T1.id "123" AND T1.x = "" AND T2.y = "" GROUP BY T1.id
Mais il me selectionne a chaque fois le premier champ a, b, c, ou d qu'il rencontre et pas forcement celui correspondant au clause where.
Je doute. Je suis au fond du trou , j'en peux plus. Un peu d'aide ? SVP
Pour vous simplifier la compréhension, je ne vous dit pas que j'ai en fait 3 tables et 30 champs par table.
KenZara
Messages postés112Date d'inscriptionvendredi 24 décembre 2004StatutMembreDernière intervention20 décembre 2011 30 juin 2008 à 10:43
Bonjour [auteur/FARFADH/1022332.aspx Farfadh]
Ce qui m'étonne dans ta réponse, est non seulement sa dureté, mais que la question a été posé 5 mois auparavant! (La question a été posée le 21/01/2008 23:34:05 et ta réponse est le 28/06/2008 00:29:36) Donc j'imagine que la personne a non seulement fini son test, mais il a vachement avancé.
"je perdu du temps à le faire à ta place et je n'apprécie pas du tout." <-- Ok!
zazadec
Messages postés31Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention30 juin 2008 30 juin 2008 à 13:25
Merci KenZara pour ton soutien.
En effet vu l'antériorité du post, j'ai un peu avancé, voir je ne me souvenais plus de ce post. Donc à priori j'ai résolu mon pb.
Désolé Farfadth de t'avoir fait perdre ton ton qui a priori était précieux.
De mémoire, j'ai fait plusieurs requetes SQL avec mis en variables des premiers résultats et utilisation de ces variables pour les suivantes.
KenZara
Messages postés112Date d'inscriptionvendredi 24 décembre 2004StatutMembreDernière intervention20 décembre 2011 22 janv. 2008 à 13:13
Bonjour,
Je le trouve un peu bizarre ton problème, à priori ta requête te permettra de récupérer (a,b,c et d) se trouvant dans les deux tables T1 et T2 avec l'identifiant de T1 se trouvant dans T2 et qui équivaut 123. Ainsi que x et y qui sont vides. Est ce ce que tu as dans ton résultat? Peux tu nous donner un exemple de tes deux tables et le résultat de ta requête pour mieux visualiser le soucis..
zazadec
Messages postés31Date d'inscriptionvendredi 21 janvier 2005StatutMembreDernière intervention30 juin 2008 22 janv. 2008 à 23:11
Mon problème vient du fait que le premier enregistrement lu est retenu. C'est à dire que mon moteur SQL trouve bien des valeurs pour a b c d mais ce n'est pas celle voulues.
Disons l'exemple suivant
-pour T1 les valeurs suivantes
id01=123, x01=5, a=a01, b=b01,
id11=123, x11=6, a=a11, b=b11,
id21=123, x21='', a=a21, b=b21,
-pour T2 les valeurs suivantes
id02=123, x02=7, c=c02, d=d02,
id12=123, x12=8, c=c12, d=d12,
id22=123, x22='', c=c22, d=d22,
ma requete SELECT T1.id, T1.a, T1.b, T2.c, T2.d FROM T1, T2
WHERE T1.id T2.id AND T1.id "123" AND T1.x = "" AND T2.y = "" GROUP
BY T1.id affiche le résultat suivant
id=123
a=a01
b=b01
c=c02
d=d02
Comme tu peux le comprendre j'ai essayé de transcrire ma vrai requete. Mais le résultat est là !!!
zazadec
Vous n’avez pas trouvé la réponse que vous recherchez ?
Farfadh
Messages postés68Date d'inscriptiondimanche 1 avril 2007StatutMembreDernière intervention 7 juillet 20084 28 juin 2008 à 00:29
Après vérification, la requête que tu donnes en exemple fonctionne correctement et ne donne pas les résultats que tu nous fournis. Ton problème ne vient pas de sa structure, mais d'un oubli dans ton vrai code, un détail auquel tu n'as pas pensé à priori, ou éventuellement d'un bug de (ta version de) MySQL qui serait incapable de traiter ta requête correctement avec les champs que tu utilises réellement.
La prochaine fois, teste ton exemple avant d'affirmer qu'il se comporte de telle ou telle façon, je perdu du temps à le faire à ta place et je n'apprécie pas du tout.
Si tu cherches encore d'où vient ton problème, envoie-nous un exemple probant.