Défit pour un pro

Résolu
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 juin 2008 - 21 janv. 2008 à 23:34
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 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.

zazadec

5 réponses

KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 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!

Kenza
3
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 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.

Merci de t'etre pencher sur mon pb

zazadec
3
KenZara Messages postés 112 Date d'inscription vendredi 24 décembre 2004 Statut Membre Dernière intervention 20 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..

Kenza
0
zazadec Messages postés 31 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 30 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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Farfadh Messages postés 68 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 7 juillet 2008 4
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.
0
Rejoignez-nous